Grunt et Gulp sont en fait des exécuteurs de tâches, et ils présentent des différences telles que les tâches pilotées par la configuration et les transformations basées sur le flux. Chacun a ses propres forces et faiblesses, mais en fin de compte, ils vous aident à peu près à créer des tâches qui peuvent être exécutées pour résoudre un problème de construction plus important. La plupart du temps, ils n'ont rien à voir avec le temps d'exécution réel de l'application, mais ils se transforment ou mettent en place des fichiers, des configurations et d'autres éléments pour que le temps d'exécution fonctionne comme prévu. Parfois, ils génèrent même des serveurs ou d'autres processus dont vous avez besoin pour exécuter votre application.
Webpack et Browserify sont des bundleurs de packages. Fondamentalement, ils sont conçus pour exécuter toutes les dépendances d'un package et concaténer leur source dans un seul fichier qui (idéalement) peut être utilisé dans un navigateur. Ils sont importants pour le développement Web moderne, car nous utilisons tellement de bibliothèques conçues pour fonctionner avec Node.js et le compilateur v8 . Encore une fois, il y a des avantages et des inconvénients et différentes raisons pour lesquelles certains développeurs préfèrent l'un ou l'autre (ou parfois les deux!). Habituellement, les bundles de sortie de ces solutions contiennent une sorte de mécanismes d'amorçage pour vous aider à accéder au bon fichier ou module dans un bundle potentiellement énorme.
La ligne floue entre les coureurs et les bundlers pourrait être que les bundlers peuvent également effectuer des transformations complexes ou des transpilations pendant leur exécution, afin qu'ils puissent faire plusieurs choses que les exécuteurs de tâches peuvent faire. En fait, entre browserify et webpack, il y a probablement une centaine de transformateurs que vous pouvez utiliser pour modifier votre code source. À titre de comparaison, il y a au moins 2000 plugins gulp répertoriés sur npm en ce moment. Vous pouvez donc voir qu'il existe des définitions claires (espérons-le ...;)) de ce qui fonctionne le mieux pour votre application.
Cela étant dit, vous pourriez voir un projet complexe utilisant à la fois des exécuteurs de tâches et des regroupeurs de packages en même temps ou en tandem. Par exemple, à mon bureau, nous utilisons gulp pour démarrer notre projet, et webpack est en fait exécuté à partir d'une tâche gulp spécifique qui crée les bundles sources dont nous avons besoin pour exécuter notre application dans le navigateur. Et comme notre application est isomorphe , nous regroupons également une partie du code serveur .
À mon humble avis, vous voudrez peut-être vous familiariser avec toutes ces technologies, car il y a de fortes chances que vous les voyiez (les utilisiez) toutes au cours de votre carrière.