Après avoir passé une journée à creuser cette question, j'ai voulu fournir ce que je crois être une réponse légèrement plus précise. L'équipe de webpack a publié un utile (et délicat à remarquer) glossaire .
Je crois que la confusion au sujet des chunks et des bundles est que les termes peuvent se référer à la même chose, mais doivent être utilisés à différents moments dans le processus de webpack. processus .
définitions du glossaire webpack
Module : Des morceaux discrets de fonctionnalité qui offrent une surface plus petite qu'un programme complet. Les modules bien écrits fournissent des abstractions solides et des limites d'encapsulation qui constituent une conception cohérente et un objectif clair.
Chunk : Ce terme spécifique au webpack est utilisé en interne pour gérer l'empaquetage. processus . Les bundles sont composés de chunks, dont il existe plusieurs types (par exemple, entry et child). En général, les chunks correspondent directement aux bundles de sortie ; cependant, certaines configurations ne permettent pas d'établir une relation biunivoque.
Offre groupée : Produites à partir d'un certain nombre de modules distincts, les liasses contiennent la versions finales de fichiers sources qui ont déjà subi le processus de chargement et de compilation.
(c'est moi qui souligne)
Interprétation
Je résume la différence comme suit : un chunk est un groupe de modules au sein du processus webpack un faisceau est un Morceau ou ensemble de morceaux émis .
La distinction est utile lorsqu'on parle de processus webpack au fur et à mesure qu'ils se produisent . Lorsque les modules sont regroupés, ils peuvent changer de manière significative (en particulier pendant le traitement des plugins), il n'est donc pas exact de les appeler des bundles à ce stade, les chunks peuvent même ne pas être émis en tant que bundles dans la sortie finale ! Une fois que webpack est terminé, il est utile d'avoir un terme pour se référer à tous les fichiers finaux émis (bundles).
Votre exemple
Donc, pour votre exemple
{
entry: {
foo: ["webpack/hot/only-dev-server.js","./src/foo.js"],
bar: ["./src/bar.js"]
},
output: {
path: "./dist",
filename: "[name].js"
}
}
-
Modules : "webpack/hot/only-dev-server.js", "./src/foo.js", "./src/bar.js" ( + tout autre module dépendant de ces points d'entrée !).
-
Chunks : foo, bar
-
Liasses : foo, bar
Dans votre exemple, vos chunks et bundles ont une relation 1:1, mais ce n'est pas toujours le cas. Par exemple, si vous ajoutez des cartes sources, vous aurez une relation 1:2 entre un chunk et un bundle.
Ressources
1 votes
Voici un bon article pour rendre les choses un peu plus claires pour vous toptal.com/javascript/a-guide-to-managing-webpack-dependencies
4 votes
@chchrist bien que ce soit un bel article, il ne répond malheureusement pas à la simple question du "bundle vs chunk".
0 votes
Discussions : github.com/webpack/webpack.js.org/issues/970 y github.com/webpack/webpack/issues/162