编写翻译服务的Webpack插件时遇到问题。 目标是: 在编译期间获取所有必需模块的名称(和源代码)。 我需要能够扫描包含的源代码的特殊t()函数的使用情况,但我只想扫描将被包含在该包(这取决于构buildconfiguration,可以是所有项目模块的子集) 。 根据收集到的模块,我想创build更多的模块(带有翻译),并将其添加到包中。 这些模块需要能够导入自己的依赖关系。 另外一个要求就是Webpack的代码分割function应该可以和dynamic创build的模块一起工作(我想把它们提取到不同的文件 – 例如bundle.[lang].js )。 此外,这可能超出了这个问题的范围,我必须使这些块翻译可选(所以你不必加载所有的语言,但只有一个)。 更多细节可以在https://github.com/ckeditor/ckeditor5/issues/387find。 我一直在尝试多种解决scheme,但Webpack 2的文档不是很有帮助。 我可以通过侦听模块parsing钩子( before-resolve )来获取所有的模块,但是我不知道所有的依赖关系何时parsing,我不知道在这之后是否可以添加更多的模块(以及如何做到这一点- addEntry确定,当我可以使用它?)。 我也在考虑连接Webpack插件和Webpack加载器(因为我需要的特性与Webpack的样式加载器非常相似),但是从插件级别来说,我只能添加加载器的path,而不是加载器本身,所以我可以“ t传递configuration对象作为参数 – 我错了吗? PS。 我使用Webpack 2.如果需求看起来很奇怪,请参阅https://github.com/ckeditor/ckeditor5/issues/387 :)。
我得到了CommonsChunkPlugin查看所有入口点的一般要点,检查它们之间是否有常见的包/依赖关系,并将它们分离到它们自己的包中。 所以,我们假设我有以下configuration: … enrty : { entry1 : 'entry1.js', //which has 'jquery' as a dependency entry2 : 'entry2.js', //which has 'jquery as a dependency vendors : [ 'jquery', 'some_jquery_plugin' //which has 'jquery' as a dependency ] }, output: { path: PATHS.build, filename: '[name].bundle.js' } … 如果我捆绑不使用CommonsChunkPlugin 我将最终得到3个新的捆绑文件: entry1.bundle.js包含来自entry1.js和jquery的完整代码,并包含自己的运行时 entry2.bundle.js包含来自entry2.js和jquery的完整代码,并包含它自己的运行时 vendors.bundle.js其中包含从jquery和some_jquery_plugin完整的代码,并包含自己的运行时 这显然是不好的,因为我可能会在页面中加载jquery 3次,所以我们不希望这样做。 如果我使用CommonsChunkPlugin捆绑 根据我传递给CommonsChunkPlugin参数,会发生以下任何情况: 案例1:如果我通过{ […]