如何编写Webpack插件,该插件基于其他模块动态地将模块添加到捆绑软件中?

webpack Webpack

小胖

2020-03-24

我在为翻译服务编写Webpack插件时遇到问题。

目标是:

  1. 在编译期间获取所有必需模块的名称(和源代码)。我需要能够扫描包含的源代码以用于特殊t()功能,但是我只想扫描将包含在捆绑软件中的那些模块(根据构建配置的不同,这些模块可以是所有项目模块的子集)。
  2. 基于收集的模块,我想即时创建其他模块(包含翻译)并将其添加到捆绑软件中。这些模块需要能够导入自己的依赖关系。

另一个要求是Webpack的代码拆分功能应与动态创建的模块一起使用(例如,我想将它们提取到单独的文件中bundle.[lang].js)。另外,这可能不在这个问题的范围之内,我必须使带有翻译的那些块成为可选的(因此您不必加载所有语言,而只需加载一种)。

可以在https://github.com/ckeditor/ckeditor5/issues/387中找到更多详细信息

我一直在尝试多种解决方案,但是Webpack 2的文档不是很有帮助。我可以通过监听模块分辨率挂钩(让所有的模块before-resolve),但我不知道什么时候所有的依赖都解决了,我不知道我能不能以后添加更多的模块(以及如何做到这一点-是addEntryOK以及何时可以使用它?)。

我也在考虑连接Webpack插件和Webpack加载器(因为我需要的功能与Webpack的style-loader非常相似),但是从插件级别,我只能添加加载器的路径,而不是加载器本身,因此我可以t将配置对象作为参数传递–我错了吗?

PS。我使用Webpack2。如果您觉得要求很奇怪,请参阅https://github.com/ckeditor/ckeditor5/issues/387 :)。

第3459篇《如何编写Webpack插件,该插件基于其他模块动态地将模块添加到捆绑软件中?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

0个回答

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android