webpack commune morceaux plugin vs webpack dll du plugin

avant d'utiliser webpack common chunks plugin pour créer vendor bundle contenant des bibliothèques tierces comme angular, react, lodash etc, mais ensuite je savais à propos de webpack dll plugin. Ils semblent faire les mêmes choses, mais dll plugin vous permet également de réduire le temps de construction. Donc je suis confus ai-je besoin d'utiliser ces deux plugins ensemble. Devrais-je utiliser common chunks plugin pour créer un paquet fournisseur dans la construction de production et dll plugin dans la construction de développement. Ou je devrais utiliser dll plugin dans la production et développement construit? Pourriez-vous m'expliquer pourquoi?

25
demandé sur pavel06081991 2017-01-27 12:40:27
la source

3 ответов

Désolé pour la réponse longue, mais j'espère qu'il peut aider à rendre les choses plus claires.

CommonsChunkPlugin justification

L'auteur du projet définit un certain nombre de points d'entrée de la demande qui produiront chacun un faisceau. Les exemples typiques sont vendeur, polyfills, main, mais par exemple votre application pourrait être divisée en plusieurs "zones" indépendantes qu'il est logique de charger séparément (comme par exemple login, main, settings).

Projet auteur définit l'un de ces lots, ou d'une autre, doit contenir un code commun à tous. Ce sont des bibliothèques tierces et vos propres utilitaires partagés à travers tous les points d'entrée.

alors il est de la responsabilité du plugin d'analyser et de collecter un tel code commun, puis de le mettre en paquet défini. Tous ces travaux d'analyse et de travail se produisent encore et encore chaque fois que vous commencez une nouvelle construction, et - en mode veille - lorsque vous modifiez le code qui est partagé et se trouve tomber dans communes bundle.

une telle scission est utile aussi bien pour une construction de développement que pour une construction de production. Mais pour l'environnement dev, disons simplement que la reconstruction du code lié aux vendeurs et aux polyfills peut prendre un certain temps et cela peut être un gaspillage quand vous n'êtes pas vraiment en train de changer ces pièces (en supposant que le code d'une tierce partie dont vous dépendez est plus grand que votre propre base de code).

DllPlugin justification

compte tenu du même environnement, par exemple développement, Projet auteur crée deux configurations webpack où il y en avait une. Le plugin pourrait être appliqué à l'environnement de production, bien qu'on puisse dire que DllPlugin a plus de sens dans le développement (voir ci-dessous).

la première configuration de webpack est nécessaire pour ce qu'on appelle DLLs, qui sont un peu proches du code commons vu avant, mais pas exactement. Pour ma compréhension, les DLLs ont tendance à grouper le code de tiers (vendeur et polyfills) et pas votre propre code d'utilité partagé, mais là encore c'est plus une impression et pas une règle stricte. Quoi qu'il en soit, ici l'auteur du projet devrait grouper du code qui change beaucoup moins fréquemment au cours d'une session de développement normale. L'idée, dans l'environnement dev, est d'exécuter cette construction de temps en temps, par exemple lorsqu'une dépendance change. Et habituellement, c'est au développeur de lancer cette construction quand il pense que c'est nécessaire.

l'autre configuration de webpack est nécessaire pour le propre code du projet, ou de toute façon code qui change régulièrement tout en faisant le travail de dev. C'est la construction réelle que le développeur exécutera encore et encore, ou exécutera en mode veille, et à ce point, il devrait être beaucoup plus rapide par rapport à la construction simple vu dans le scénario CommonsChunk.


Donc, dans l'ensemble, ils semblent similaires, mais ils vous permettent de frapper des cibles différentes. Tellement, que vous pourriez envisager D'utiliser DllPlugin pour votre environnement dev (avantage: court temps de compilation), tout en utilisant CommonsChunkPlugin pour la production (Avantage: temps de charge court lorsque l'application change). Encore une fois, vous pourriez aussi bien utiliser DllPlugin dans la production, avec le petit inconvénient d'avoir à exécuter deux constructions d'affilée: une pour DLLs, la suivante pour l'application.

HTH

28
répondu superjos 2017-05-09 20:21:53
la source

Vous utilisez l'un ou l'autre. Voici un article, qui décrit comment utiliser DllPlugin et, au bas de la page, vous pouvez voir d'autres méthodes d'accomplir la même chose. Il vous indique quelles sont les différences ainsi que les avantages et les inconvénients. Cela devrait vous aider à démarrer.

9
répondu user981375 2018-03-23 05:47:21
la source

je suis à la recherche de la différence, ici aussi, mais je ne pense vraiment pas que ce soit le cas. Au moins, pas plus.

Si vous prenez un coup d'oeil à l' webpack documenation pour le code fractionnement des bibliothèques, il mentionne un moyen d'extraire un fichier manifeste. D'après ce que j'ai compris, c'est ce que fait le DllPlugin, sauf qu'il est un peu plus implicite avec le CommonsChunkPlugin.

l'avantage est que vous n'avez pas besoin de maintenir plusieurs Webpack configurations pour ce genre de fonctionnalité.

4
répondu adam-beck 2017-08-28 15:01:28
la source