J'essaie de résumer mes connaissances sur les gestionnaires de paquets, les regroupeurs et les exécutants de tâches JavaScript les plus populaires. Veuillez me corriger si je me trompe :
-
npm
&bower
sont des gestionnaires de paquets. Ils se contentent de télécharger les dépendances et ne savent pas comment construire des projets par eux-mêmes. Ce qu'ils savent, c'est qu'il faut appelerwebpack
/gulp
/grunt
après avoir récupéré toutes les dépendances. -
bower
c'est commenpm
mais construit un arbre de dépendances aplati (contrairement ànpm
qui le fait de manière récursive). Significationnpm
récupère les dépendances pour chaque dépendance (peut récupérer la même chose plusieurs fois), alors quebower
vous demande d'inclure manuellement les sous-dépendances. Parfois,bower
ynpm
sont utilisés ensemble pour le front-end et le back-end respectivement (puisque chaque mégaoctet peut avoir de l'importance dans le front-end). -
grunt
ygulp
sont des exécutants de tâches pour automatiser tout ce qui peut l'être (c'est-à-dire compiler CSS/Sass, optimiser les images, faire un paquet et le minifier/transpiler). -
grunt
vs.gulp
(c'est commemaven
vs.gradle
ou configuration vs. code). Grunt est basé sur la configuration de tâches indépendantes distinctes, chaque tâche ouvre/manipule/ferme le fichier. Gulp nécessite moins de code et est basé sur les flux Node, ce qui lui permet de construire des chaînes de tuyaux (sans rouvrir le même fichier) et le rend plus rapide. -
webpack
(webpack-dev-server
) - pour moi, il s'agit d'un gestionnaire de tâches avec rechargement à chaud des modifications, ce qui permet d'oublier tous les observateurs JS/CSS. -
npm
/bower
+ les plugins peuvent remplacer les task runners. Leurs capacités se recoupent souvent, ce qui entraîne des implications différentes si vous devez utilisergulp
/grunt
surnpm
+ plugins. Mais les task runners sont définitivement meilleurs pour les tâches complexes (par exemple : "à chaque build, créer un bundle, transpiler de ES6 à ES5, l'exécuter sur tous les émulateurs de navigateurs, faire des captures d'écran et déployer sur dropbox via ftp"). -
browserify
permet d'empaqueter des modules de nœuds pour les navigateurs.browserify
vsnode
'srequire
est en fait AMD et CommonJS .
Questions :
-
Qu'est-ce que
webpack
&webpack-dev-server
? La documentation officielle dit que c'est un module bundler mais pour moi c'est juste un task runner. Quelle est la différence ? - Où utiliseriez-vous
browserify
? Ne peut-on pas faire la même chose avec les importations node/ES6 ? - Quand utiliseriez-vous
gulp
/grunt
surnpm
+ plugins ? - Veuillez fournir des exemples de cas où vous devez utiliser une combinaison
59 votes
Il est temps d'ajouter enroulement ?
186 votes
C'est une question très raisonnable. les pseudo-développeurs web comme moi trébuchent sur tous les paquets qui sont implémentés de façon hebdomadaire
158 votes
hackernoon.com/
47 votes
@Fisherman Je suis totalement nouveau dans ce domaine, et cela semble complètement fou...
0 votes
@DavidStosik peut-être avez-vous manqué les parties encourageantes dans les sections de commentaires :)
15 votes
@Fisherman Le commentaire "recommandé" que je viens de lire était encore pire ! D : Je veux juste construire une page statique qui utilise quelques librairies CSS/JS, et je bénéficierais d'un outil qui peut compiler tout ça ensemble... Ajoutez-y un moteur de templating pour donner un peu de repos à mes doigts Ctrl-C/Ctrl-V, et ce serait parfait... Et pourtant, après des heures de travail, j'essaie toujours de trouver un moyen d'y arriver...
3 votes
@DavidStosik : C'est un investissement unique. Après une configuration parfaite, vous êtes prêt à voler.
0 votes
@gman, jspm qui utilise aussi le rollup.
2 votes
Je suis développeur web depuis plus de 16 ans et j'ai passé une grande partie de ma carrière sous l'égide de Microsoft .NET, qui nous a protégés pendant de nombreuses années d'outils comme ceux-là avant de nous faire vivre l'enfer en étant soudainement "cool" avec tout cela à la fois (même si leur IDE ne pouvait pas le gérer [j'ai entendu dire que vs2017 est meilleur, mais je vais rester avec WebStorm maintenant {Digresption}]). Quoi qu'il en soit, ces choses compliquent l'infrastructure de développement et nécessitent beaucoup plus de temps de configuration initiale pour que tout soit parfait, mais une fois que c'est en place et que ça fonctionne, c'est génial !
0 votes
Il est temps d'ajouter du fil ( yarnpkg.com ) ?
2 votes
@Fisherman semble quelque peu naïf d'imaginer qu'il s'agira vraiment d'un "investissement unique"... après quelques années de travail avec la technologie, la motivation pour apprendre ces couches de complications superflues est, pour moi, fortement diminuée par l'expérience amère de choses qui semblaient bien fonctionner et qui ont été rendues obsolètes. Les technologies web à la mode comme celle-ci ont une mauvaise odeur de ce point de vue (et je ne suis même pas vieux).
2 votes
Je pense que vous devriez également ajouter le Babel dans la liste.
0 votes
Npm ne sait rien du tout de webpack/gulp/grunt. Il sait juste comment installer vos dépendances, exécuter votre application et vos tests. Vous pourriez ajouter des fonctionnalités supplémentaires en ajoutant des scripts personnalisés, cependant.
1 votes
Bienvenue dans le terrier du lapin.
0 votes
Il y a 6 questions directement posées et une dizaine d'autres indirectement posées comme "est-ce correct ?".