编写webpack加载器 - 注入一次代码

时间:2015-10-14 17:25:45

标签: javascript node.js webpack

我正在尝试编写一个webpack加载器,其中一个要求是我需要在每个bundle中注入代码ONCE。

加载程序中是否有一种方法可以检测我正在处理的模块是否是一个入口点?如果没有,是否有一种简单的方法可以为每个包注入一次代码?

3 个答案:

答案 0 :(得分:2)

您可以像注入代码一样注入代码。您的加载器应该将带有需求的转换源返回到您需要注入一次的代码。 Webpack的文档将此公共代码称为加载器的运行时。 http://webpack.github.io/docs/how-to-write-a-loader.html#extract-common-code



var loaderUtils = require('loader-utils');

module.exports = function(content) {
  return "require(" +
    loaderUtils.stringifyRequest(this, "!" + require.resolve("./runtime")) +
    ");\n\n" +
    content;
};




答案 1 :(得分:2)

这有用吗?

module.exports = function (content) {

  if (this.options.entry == this.resourcePath)
    content = 'var newCode = 10;\r\n\r\n' + content;

  return content;

};

我使用它只在入口文件上注入代码。

答案 2 :(得分:0)

您不能在入口点使用加载器(并且您不能依赖入口点)。 因此,如果你想通过加载器注入一些代码,你必须在每个入口点都要求它。