我正在编写一个webpack插件和加载器,我想创建一个通过我的插件生成的“动态”模块。
基本上,我希望我的加载器向动态模块发出导入,如下所示:
module.exports = function (content) {
return `
const dynamicModule = require('./the-dynamic-module')
// module.exports = ...
`;
}
插件应生成"./the-dynamic-module"
,理想情况下,每次动态模块更改时都应重新构建加载程序。
有没有办法实现这个目标?
有一个插件generates virtual modules,但它们是静态的。在编译期间,我想生成一个动态的。
任何帮助表示赞赏!欢呼声。
答案 0 :(得分:1)
您可以使用以下插件在编译时生成虚拟模块(我是该插件的作者): https://github.com/sysgears/webpack-virtual-modules
var webpack = require("webpack");
var VirtualModulesPlugin = require("webpack-virtual-modules");
var virtualModules = new VirtualModulesPlugin();
var compiler = webpack({
// ...
plugins: [
virtualModules
]
});
compiler.watch();
稍后介绍一些其他代码,也许是在您的Webpack插件中调用的:
virtualModules.writeModule('./the-dynamic-module.js',
'module.exports = ...the contents of dynamic module...');
每次通过virtualModules.writeModule
编写动态模块时,其效果与更改后的文件系统中的真实文件相同-Webpack将重新启动编译并触发配置为处理该文件的加载器类型。