Qu'est-ce qui est bon pour npm, bower, gulfp, Yeoman, et grunt?

je suis un développeur de backend, et un peu confus par npm, bower, gulp, grunt, et Yeoman. Chaque fois que je demande à quelqu'un Quel est leur but, la réponse a tendance à se résumer au gestionnaire de la dépendance - pour chacun d'eux. Sûrement, nous n'avons pas besoin de quatre outils différents qui font tous la même chose?

est - ce que quelqu'un peut s'il vous plaît expliquer ce que chacun de ceux-ci est bon pour en aussi peu de phrases que possible - si possible juste un par outil, en utilisant un langage de cinq ans (avec développement des compétences) pourrait comprendre?

par exemple:

  • SVN stocke ,gère et conserve la trace des changements à notre code source

j'ai utilisé maven, Jenkins, nexus et ant dans le passé; peut-être vous pouvez comparer les outils ci-dessus?

Aussi n'hésitez pas à ajouter d'autres outils frontaux à la liste.

Voici ce que j'ai trouvé jusqu'à présent - pas sûr que ce soit correct, cependant:

  • la charmille dependency manager pour le front-end/JS bibliothèques, utilise un plat de dépendance liste
  • mnp dependency manager pour le nœud.js serveur, peut résoudre les dépendances transitives/dépendance arbres
  • grunt exécute des tâches, un peu comme Jenkins, mais localité sur la ligne de commande
  • Yeoman provided scaffolding,I. e skeleton projects
  • gulp même que grunt, mais écrit en js seulement
  • nœud.js serveur pour js apps?
  • git décentralisée SCM/VCS, homologue à svn/cvs

suis-je proche? :)

25
demandé sur Christian 2016-04-22 11:28:24

4 réponses

Vous sont proches! Bienvenue à JavaScript:)

Permettez-moi de vous donner une brève description et une fonctionnalité que la plupart des développeurs passent un certain temps avec.

la charmille Se concentre sur les paquets qui sont utilisés dans le navigateur. Chaque bower install <packagename> pointe vers exactement un fichier à inclure (plus peut être téléchargé). En raison du succès de webpack, browserify et babel, il est généralement obsolète en tant que gestionnaire de dépendances de première classe.

mnp Historiquement axé sur le code NodeJS, mais a renversé bower pour les modules de navigateur. Ne laissez personne vous tromper: MNP est énorme. NPM charge également de nombreux fichiers dans votre projet et une nouvelle installation npm est toujours une bonne raison pour brasser une nouvelle tasse de café. NPM est facile à utiliser, mais peut casser votre application lorsque vous changez d'environnement en raison de la façon lâche de référencement des versions et l'arbitraire de la publication de modules. Recherche Shrink Wrap et npm install --save-exact

grunt Facilite l'automatisation des tâches. Gorgée de frère plus âgé et un peu plus lent. La communauté JavaScript avait l'habitude de passer beaucoup de temps avec lui en 2014. Grunt est déjà considéré comme un héritage dans certains endroits, mais il ya encore une grande quantité d'automatisation vraiment puissante à trouver. La Configuration peut être un cauchemar pour les grandes utilisations. il y a un module grunt pour cela.

gulfp Fait la même chose que grunt, mais est plus rapide.

npm de l'exécution du script Vous n'aurez peut-être pas besoin de coureurs de tâches. Les scripts NodeJS sont très faciles à écrire, de sorte que la plupart des cas d'utilisation permettent de personnaliser le flux de travail d'automatisation des tâches. Exécutez des scripts à partir du contexte de votre paquet.fichier json à l'aide de npm de l'exécution du script

webpack Ne ratez pas webpack. Surtout si vous vous sentez perdu sur les nombreuses façons d'écrire JavaScript en code modulaire cohérent. Paquets Webpack .js file en modules et le fait à merveille. Webpack est très extensible et offre un bon environnement de développement: webpack-dev-serveur Utiliser en conjonction avec babel pour la meilleure expérience JavaScript possible à ce jour.

Yeoman Échafaudage. Extrêmement utile pour les équipes différents fonds car il offre un terrain d'entente contrôlable pour l'architecture de vos projets. Il y a même un échafaudage pour échafaudages .

38
répondu Mirko 2016-04-22 15:34:40

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

  1. j'utilise yeoman à l'échafaud un squelette de base.
  2. j'utilise node comme exécution pour mon application. IE. run node appname
  3. j'utilise mnp nœud d'installation des modules pour m'aider à écrire la demande dans le noeud
  4. je pourrais avoir besoin certains composants de bower comme les bibliothèques front-end donc utiliser bower pour aller chercher ceux-ci.
  5. maintenant, pour faire quelques tâches répétitives, je vais utiliser grunt ou gulp pour écrire quelques tâches. Donc chaque fois que je veux le répéter, dites minimifiez mes fichiers js que j'appelle grunt/gulp et faites-les le faire. La différence que vous demandez, Gulp est basé sur le flux tandis que grunt est basé sur la tâche.
  6. je ne le contrôle de version à l'aide de git pour garder une trace des changements
6
répondu JoviaArk 2016-04-22 08:51:49
  1. Gulp vs Grunt: Gulp offre plus de flexibilité avec l'automatisation des tâches, Grunt est livré avec beaucoup de fonctionnalités conformément aux pratiques de développement communes. Il y a deux grandes différences entre Grunt et Gulfp:

    • Grunt se concentre sur la configuration, tandis que Gulfp se concentre sur le code
    • Grunt a été construit autour d'un ensemble de intégré, et les tâches couramment utilisées, tandis que Gulfp est venu autour avec l'idée d'appliquer de rien, mais la façon dont la communauté a développé des micro-tâches doivent se connecter les uns aux autres Lire ici

  1. NodeJS: il s'agit d'un langage de script non-bloquant côté serveur. Ce qui signifie que les opérations ne bloqueront pas l'exécution jusqu'à la fin de l'opération actuelle.

  1. Git: comme vous l'avez mentionné, c'est un Outil SCM, largement utilisé. Selon le GitHub docs, il est différent des autres outils SCM car les données ne sont jamais supprimées.

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

    quand vous faites des actions en Git, presque tous ajouter seulement des données à la base de données Git. Il est très difficile de trouver un système pour faire tout ce qui n'est pas annulable ou de faire effacer des données d'une quelconque manière. Comme dans n'importe quel VCS, vous pouvez perdre ou gâcher des changements que vous n'avez pas encore commis; mais après avoir envoyé un snapshot dans Git, il est très difficile de perdre, surtout si vous poussez régulièrement votre base de données vers un autre dépôt.

    Lire La Suite


  1. Bower vs NPM : Bower et NPM sont des gestionnaires de dépendances mais les modules Bower sont pour le développement frontal. NPM est une énorme collection de modules à utiliser avec NodeJS backend. Cette SORTE de réponse le couvre mieux
1
répondu Amresh Venugopal 2017-05-23 12:18:11

j'ai ajouté quelques détails:

npm est un gestionnaire de paquets pour javascript.

grunt & gulp sont utiles pour séparer et automatiser des tâches telles que la minification, la compilation, les tests unitaires en ligne de commande, c'est une solution beaucoup plus légère que (par exemple) visual studio car le processus est seulement un ligne de commande/processus séparé (et habituellement léger).

concernant les différences entre gulp , grunt et bower il y a déjà un billet: quelles sont les différences entre Grunt, Gulp.js et Bower? Pourquoi et quand les utiliser?

Nodejs est plus un javascript runtime . Nœud.js permet la création de serveurs web et outils de mise en réseau utilisant js et une collection de "modules" qui traitent diverses fonctionnalités de base et d'autres fonctions de base. Source

ce billet reprend les différences entre Git et Subversion: pourquoi git est-il meilleur que Subversion?

1
répondu Giu 2017-05-23 12:02:38