Quels sont npm, bower, gulp, Yeoman, et grunt bon pour?

Je suis un développeur de backend, et légèrement confus par npm, bower, gulp, grunt et Yeoman. Chaque fois que je demande à quelqu'un quel est leur but, la réponse tend à se limiter au gestionnaire de dépendance – pour tous. Sûrement, nous n'avons pas besoin de quatre outils différents qui font de même?

Quelqu'un peut-il expliquer ce que chacun d'entre eux est bon pour autant que possible – si possible, un seul par outil, en utilisant un langage de cinq ans (avec des compétences de développement) pourrait comprendre?

Par exemple:

  • SVN stocke, gère et surveille les modifications apportées à notre code source

J'ai utilisé maven, Jenkins, nexus et ant dans le passé; Peut-être pourriez-vous comparer les outils ci-dessus à ceux-ci?

Aussi, n'hésitez pas à ajouter d'autres outils de front-end à la liste.

Voici ce que j'ai trouvé jusqu'ici – pas sûr que ce soit correct, cependant:

  • Gestionnaire de dépendance de bower pour les bibliothèques de développement / JS de front-end, utilise une liste de dépendance plate
  • Npm gestionnaire de dépendance pour serveur node.js, peut résoudre des dépendances transitives / arbres de dépendance
  • Grunt exécute des tâches, tout comme Jenkins, mais la localité sur la ligne de commande
  • Yeoman a fourni des échafaudages, c'est-à-dire des projets squelettiques
  • Gulp même que grunt, mais écrit en js seulement
  • Serveur node.js pour les applications js?
  • Git décentralisé SCM / VCS, contrepartie aux svn / cvs

Est-ce que je suis proche? 🙂

Tu es proche! Bienvenue sur JavaScript 🙂

Permettez-moi de vous donner une brève description et une fonctionnalité dont la plupart des développeurs passent du temps.

Bower Se concentre sur les paquetages qui sont utilisés dans le navigateur. Chaque système d' bower install <packagename> indique exactement un fichier à inclure (plus peut être téléchargé). En raison de la réussite du webpack, naviguer et babel, il est surtout obsolète en tant que gestionnaire de dépendance de première classe.

Npm Historiquement se concentre sur le code NodeJS, mais a renversé la bower pour les modules de navigateur. Ne laissez personne vous tromper: le NPM est énorme. NPM charge également de nombreux fichiers dans votre projet et une nouvelle installation npm est toujours une bonne raison de préparer une nouvelle tasse de café. NPM est facile à utiliser, mais peut interrompre votre application lors de l'évolution des environnements en raison de la manière lâche de référencer les versions et de l'arbitraire de l'édition de modules. Recherche Shrink Wrap et npm install --save-exact

Grunt Facilite l'automatisation des tâches. Gulps plus vieux et un frère un peu plus lent. La communauté JavaScript avait l'habitude de sortir avec lui en 2014 beaucoup. Grunt est déjà considéré comme un legs à certains endroits, mais il existe encore une grande quantité d'automatismes vraiment puissant. La configuration peut être un cauchemar pour les cas d'utilisation plus importants. Cependant, il existe un module grunge pour cela.

Gulp Donne la même chose que grunt mais est plus rapide.

Npm run-script Vous pourriez ne pas avoir besoin de coureurs de tâches du tout. Les scripts NodeJS sont vraiment faciles à écrire, de sorte que la plupart des cas d'utilisation permettent un workflow d'automatisation personnalisé. Exécutez des scripts à partir du contexte de votre fichier package.json en utilisant npm run-script

Webpack Ne manquez pas sur le webpack. Surtout si vous vous sentez perdu sur les nombreuses façons d'écrire JavaScript dans un code modulaire cohérent. Les packages Webpack .js entrent dans des modules et le font de façon splendide. Webpack est hautement extensible et offre également un bon environnement de développement: webpack-dev-server Utilisez conjointement avec babel pour la meilleure expérience JavaScript possible à ce jour.

Yeoman Echafaudage. Extrêmement précieux pour les équipes ayant des antécédents différents, car il fournit un terrain de jeu contrôlable pour l'architecture de vos projets. Il y a même un échafaudage pour échafaudages .

Alors, puisque vous avez une bonne idée de ce que c'est, je vais vous donner un flux de travail simple.

  1. J'utilise Yeoman pour échafauder un squelette de base.
  2. J'utilise le nœud comme étant l'exécution de ma application. c'est à dire. node appname
  3. J'utilise npm pour installer des modules de noeud pour m'aider à écrire l'application dans le nœud
  4. Je pourrais avoir besoin d'un composant de bower comme les bibliothèques frontales, alors utilisez Bower pour les récupérer.
  5. Maintenant, pour faire une tâche répétitive, j'utiliserai grunt ou gulp pour écrire certaines tâches. Donc, chaque fois que je veux le répéter, dites minimiser mes fichiers js, j'appelle grunt / gulp et fais le faire. Différence que vous demandez, Gulp est basé sur les flux, alors que grunt est basé sur les tâches.
  6. Je fais le contrôle de la version à l'aide de git pour suivre les changements
  1. Gulp vs Grunt: Gulp offre plus de flexibilité à l'automatisation des tâches, Grunt est intégré avec beaucoup de fonctionnalité selon les pratiques communes de développement. Il existe deux différences principales entre Grunt et Gulp:

    • Grunt se concentre sur la configuration, tandis que Gulp se concentre sur le code
    • Grunt a été construit autour d'un ensemble de tâches intégrées et couramment utilisées, tandis que Gulp est venu avec l'idée de ne rien faire, mais comment les micro-tâches développées par la communauté devraient se connecter. Lire ici

  1. NodeJS: c'est un langage de script non bloquant sur le côté serveur. Ce qui signifie que les opérations ne bloqueront plus l'exécution jusqu'à ce que l'opération actuelle soit terminée.

  1. Git: Comme vous l'avez mentionné, il s'agit d'un outil SCM, largement utilisé. Selon les documents GitHub, il est différent des autres outils SCM car les données ne sont jamais supprimées.

    Git pense que ses données ressemblent davantage à un ensemble d'instantanés d'un système de fichiers mini. Chaque fois que vous commettez ou enregistrez l'état de votre projet dans Git, il prend essentiellement une image de l'apparence de tous vos fichiers à ce moment-là et stocke une référence à cet instantané.

    Lorsque vous faites des actions dans Git, presque toutes n'ajoutent que des données à la base de données Git. Il est très difficile de faire en sorte que le système fasse tout ce qui ne soit pas effaçable ou pour effacer les données de quelque manière que ce soit. Comme dans n'importe quel VCS, vous pouvez perdre ou gâcher des changements que vous n'avez pas encore engagés; Mais après avoir enregistré un instantané sur Git, il est très difficile à perdre, surtout si vous envoyez régulièrement votre base de données à un autre référentiel.

    Lire la suite


  1. Bower vs NPM: Bower et NPM sont des gestionnaires de dépendance, mais les modules Bower sont destinés au développement de front-end. NPM est une vaste collection de modules à utiliser avec le backend NodeJS. Cette réponse SO la couvre mieux

J'ai ajouté quelques détails:

Npm est un gestionnaire de paquetage pour javascript, npm est l'écosystème de paquets de nodejs, mais il ne peut être utilisé que pour des projets de front-end.

Grunt & gulp sont utiles pour séparer et automatiser des tâches comme la minification, la compilation, l'unité de test en ligne de commande, c'est une solution plus légère que (par exemple) studio visuel car le processus n'est qu'une ligne de commande séparée (et généralement légère).

En ce qui concerne les différences entre gulp , grunt et bower, il existe déjà un ticket: Quelles sont les différences entre Grunt, Gulp.js et Bower? Pourquoi et quand les utiliser?

Nodejs est plus un temps d'exécution javascript. Node.js permet la création de serveurs Web et d'outils de réseau utilisant js et une collection de "modules" qui gèrent différentes fonctionnalités de base et d'autres fonctions de base. La source

Ce ticket reprend les différences entre Git et Subversion: pourquoi Git est-il meilleur que Subversion?