如何将文件附加到Webpack中的包中,或者注入所需的代码?

时间:2016-06-29 22:50:19

标签: javascript webpack

我正在尝试构建一个将模块/文件注入客户端软件包的插件。

条目配置可能如下所示:

entry: {
  'main': [
    'some-stuff'
  ],
}

我想使用我的插件:

function SomePlugin(options) {
    this.entryToAppendTo = options.entryToAppendTo
}

...

plugins: [
  new SomePlugin({ entryToAppendTo: 'main' })
]

在我的插件中,我想要将该文件视为在Webpack本身中完成,例如:

SomePlugin.prototype.apply = function(compiler) {

    compiler.plugin( 'emit', function( compilation, callback ) {

        var additionalModule = 'my-module?some-stuff=' + Date.now();
        // how to add this to the specified entry?

    })

});

请注意,我传递了动态查询字符串,这就是为什么我的目标是在插件中执行此操作。

我想将一个文件追加到捆绑包中,或以某种方式将其注入客户端捆绑包中。我已尝试将其添加到compilation.assets as shown here,但它并未进入实际捆绑。我还尝试添加子编译器as demonstrated in this question,但问题相同。

1 个答案:

答案 0 :(得分:0)

这听起来与我在此尝试做的事情(成功有限)相似:Webpack plugin: how can I modify and re-parse a module after compilation?

仅将模块插入包中的问题是,即使您将其插入包中,webpack中的已编译模块也是该包源中其他部分应该调用的函数-因此,除非包中的其他部分捆绑的源代码是require插入您插入的捆绑包,它将不会执行。

您能否使用自定义加载程序解决该问题,该加载程序会为要包括的模块策略性地插入require