我尝试创建一个充当插件包装的插件,加载配置,文件等,然后添加更多插件到当前的webpack编译过程
在apply
函数中,我创建了插件,然后将它们应用于原始编译器,如下所示:
apply(compiler) {
const plugins = [
new HtmlWebpackPlugin(options1),
new HtmlWebpackPlugin(options2),
...
];
plugins.forEach((plugin) => {
plugin.apply(compiler);
});
});
我的插件没有添加任何挂钩到webpack编译器,但让其他插件添加它们。当容器项目使用webpack 4时它很好用但是在使用不同的webpack版本时我发现了一个错误。
其中一个注入的插件是html-webpack-plugin
,它是我的插件的依赖项:
的package.json
"dependencies": {
"copy-webpack-plugin": "^4.5.1",
"html-webpack-plugin": "^3.2.0",
"webpack-bundle-analyzer": "^2.11.3"
}
你可以想象,我注入了这3个插件的实例。
当使用我的插件的项目使用webpack 3
时会出现问题,因为在某些时候,html-webpack-plugin
内的NodeTemplatePlugin
需要html-webpack-plugin/node_modules/webpack
下的html-webpack-plugin
。据我了解,webpack
有自己的webpack 4
compiler
。由于原始传递webpack 3
来自NodeTemplatePlugin
,而webpack 4
中预期的compiler.hooks.thisCompilation
为webpack 3
,因此最新尝试访问peerDependency
时出现错误编译器中不存在html-webpack-plugin
。
有趣的是,在我的包中,json webpack被定义为node_modules
(与"peerDependencies": {
"webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
},
相同)所以它不应该安装在我的插件的1
2
3
4
5
6A
6B
6C
6D
7A
7B
10
11
12
下面
Select *
From table
Order By len(category_name), category_name
知道为什么会发生这种情况,或者如何从另一个插件注入插件的替代品?
如果您需要更多上下文/代码,可以在此处查看:
https://github.com/danikaze/generate-examples-index-webpack-plugin/blob/dev/src/ExamplesGenerator.js#L61