2

我正在编写一个 webpack 插件和加载器,我想创建一个通过我的插件生成的“动态”模块。

基本上,我希望我的加载器向动态模块发出导入,如下所示:

module.exports = function (content) {
  return `
    const dynamicModule = require('./the-dynamic-module')
    // module.exports = ...
`;
}

插件应该生成"./the-dynamic-module",理想情况下,每次动态模块更改时都应该重新构建加载器。

有没有办法做到这一点?

有一个生成虚拟模块的插件,但它们是静态的。我想在编译期间生成一个动态的。

任何帮助表示赞赏!干杯。

4

1 回答 1

3

您可以使用下面的插件在编译时生成虚拟模块(我是这个插件的作者): 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 将重新启动编译并触发配置为处理此文件类型的加载器。

于 2018-07-23T18:15:32.870 回答