Webpack:在插件中发出虚拟模块
我正在写一个网页包插件和加载器,我想创建一个通过我的插件生成的“动态”模块 基本上,我希望我的加载程序向动态模块发出导入,如下所示:Webpack:在插件中发出虚拟模块,webpack,webpack-plugin,webpack-loader,Webpack,Webpack Plugin,Webpack Loader,我正在写一个网页包插件和加载器,我想创建一个通过我的插件生成的“动态”模块 基本上,我希望我的加载程序向动态模块发出导入,如下所示: module.exports = function (content) { return ` const dynamicModule = require('./the-dynamic-module') // module.exports = ... `; } 插件应该生成“/动态模块”,理想情况下,加载程序应该在动态模块每次更改时重新构建 有
module.exports = function (content) {
return `
const dynamicModule = require('./the-dynamic-module')
// module.exports = ...
`;
}
插件应该生成“/动态模块”
,理想情况下,加载程序应该在动态模块每次更改时重新构建
有没有办法做到这一点
有一个插件,但它们是静态的。我想在编译期间生成一个动态的
感谢您的帮助!干杯。您可以使用下面的插件在编译时生成虚拟模块(我是该插件的作者): 稍后在一些其他代码中,可能在您的网页插件中,您调用:
virtualModules.writeModule('./the-dynamic-module.js',
'module.exports = ...the contents of dynamic module...');
每次您通过
virtualModules.writeModule
编写动态模块时,它都会产生与文件系统上已更改的真实文件相同的效果-网页包将重新启动编译并触发配置为处理此文件类型的加载程序。是否可以使用此技术真正发出虚拟子模块基于当前处理的模块内容动态地(在加载程序中)?这种情况是将扩展名为.ext1的模块的一部分(由我们的自定义加载程序处理)提取到扩展名为.ext2的虚拟模块中,该模块将由config for.ext2)中指定的加载程序处理,然后只需要.ext2 from.ext1包含已处理的ext2加载程序结果。对于任何感兴趣的人来说,这是可能的,以及Astropur如何从css模板标记中提取css文件:但它使用了不推荐的加载程序api“loaderContext.compilation”
virtualModules.writeModule('./the-dynamic-module.js',
'module.exports = ...the contents of dynamic module...');