web-dev-qa-db-fra.com

Qu'est-ce que Grunt?

J'essaie d'entrer dans Grunt, ce que je connais pour la première fois, mais je ne comprends pas son utilité.

Je comprends que c'est un taskrunner. Je comprends qu’il peut être utilisé pour des tâches telles que bundle, uglify, jshint, minify, etc., etc., etc., tout ce qui peut être transformé en tâche scriptée.

Mais je ne vois pas quel avantage cela donne. De toute façon, presque tout peut être exécuté à partir de la ligne de commande, ce qui signifie que vous pouvez simplement les combiner à l'aide d'un simple script Shell. Il me semble que configurer grunt + gruntfiles et écrire des tâches est un travail plus plutôt que d'écrire un script Shell plutôt que moins.

Qu'est-ce qui me manque à ce sujet?

72

Grunt est fondamentalement un gestionnaire de compilation/tâche écrit au-dessus de NodeJS. Je l'appellerais l'équivalent de pile NodeJS d'ANT pour Java. Voici quelques scénarios courants que vous voudriez utiliser avec Grunt:

  1. Vous avez un projet avec des fichiers javascript nécessitant une minification, et générant généralement une construction frontale séparée (dans le cas où vous utilisez, dites Java pour votre backend)). ( grunt-contrib-uglify )
  2. Lorsque vous enregistrez du code sur votre ordinateur au cours du développement, vous souhaitez que le navigateur recharge automatiquement votre page (cela peut sembler une petite chose, mais croyez-moi, cela m'a fait gagner beaucoup de temps). ( Recharge en direct )
  3. Lorsqu'un développeur enregistre du code sur sa machine, il souhaite afficher une liste complète des erreurs JS/violations des meilleures pratiques générales. ( grunt-contrib-jshint )
  4. Vous avez un projet avec des fichiers SASS/LESS qui doivent être compilés en fichiers CSS sur la machine du développeur au cours du développement. Par exemple, chaque fois qu'il enregistre un fichier SASS, vous souhaitez qu'il soit automatiquement compilé en fichier CSS, pour pouvoir l'inclure dans votre page. . ( grunt-contrib-sass )
  5. Vous avez une équipe de développeurs front-end travaillant sur l'interface utilisateur et une équipe de développeurs back-end travaillant sur le back-end. Vous voulez que les développeurs front-end utilisent les back-end REST sans avoir Pour compiler et déployer du code à chaque fois sur leurs propres machines. Dans le cas contraire, cela n’est pas possible avec une configuration de serveur Web typique car XHR n’est pas autorisé à être inter-domaine par navigateur. Grunt peut configurer un proxy pour votre redirection. Les requêtes XHR sur votre propre système du serveur Grunt Connect vers un autre système! ( grunt-contrib-proxy, grunt-contrib-connect )

Je ne pense pas que votre script Shell puisse faire TOUTES ces choses. Pour résumer, installer un fichier Gruntfile.js est fastidieux pour quelqu'un qui n'a que peu d'expérience du javascript/est nouveau pour nodeJS. Je suis passé par les mêmes peines qu'un apprenant, mais Grunt est un logiciel étonnant. Investissez le temps nécessaire pour configurer un fichier Gruntfile.j adéquat pour votre projet frontal, et vous remercierez dieu de vous avoir rendu la vie beaucoup plus facile :)

Le script Advantage vs Shell:

  1. Si vous écrivez un script shell pour chacune de ces tâches, il est fastidieux de le gérer, puis de le personnaliser pour chacun de vos besoins. Gruntfile.js est en fait assez facile. il y a une configuration avec laquelle vous l'initialisez, spécifiant les tâches que vous voulez effectuer, les sources et les cibles pour chacune.

  2. L'intégration avec les générateurs de semences du projet sur Yeoman, Gulp est un autre facteur majeur à prendre en compte. Yeoman et Gulp viennent avec Gruntfile.js 'avec des valeurs par défaut intelligentes. Pour quelqu'un qui est le seul contributeur d'assurance-chômage de son équipe, cela n'a pas de prix pour moi!

  3. Pour ceux qui travaillent sur les technologies frontales, si vous avez plusieurs personnes à vos côtés, il est plutôt facile pour elles de faire connaissance avec Grunt, qui est déjà bien documentée avec beaucoup de réponses sur SO, plutôt que de connaître votre Scripts shell. Cela pourrait être un facteur dans les grandes équipes.

  4. Les nombreux plugins pour Grunt étendent les fonctionnalités de base. À moins que votre script Shell soit TRÈS populaire, et TRÈS modulaire, je ne vois pas de plugins en cours de construction. Cela s'étend également à l'inclusion de nouvelles technologies front-end dans votre projet. Si vous voulez utiliser TypeScript dans votre projet demain, votre script Shell devra l’intégrer et en rendre compte avec vos propres efforts. Avec Grunt, c’est aussi simple que "installer npm" et ajouter une configuration.

132
shashanka n

Même si je suis d’accord avec la plupart des avantages mentionnés dans Réponse acceptée , je dois néanmoins tenir compte des inconvénients mis en évidence par Keith Cirkel dans Pourquoi devrions-nous arrêter d’utiliser Grunt & Gulp

Ainsi, certains avantages sont réfutés par les frais généraux de Grunt et vous devriez au moins en tenir compte dans votre décision finale d’utiliser Grunt ou non.

10
Miguel Gamboa