【发布时间】:2016-01-16 18:26:20
【问题描述】:
我正在尝试编写一个 webpack 加载器,其中一个要求是我需要在每个包中注入一次代码。
加载器中是否有办法检测我正在处理的模块是否是入口点?如果没有,是否有一种简单的方法可以为每个包注入一次代码?
【问题讨论】:
标签: javascript node.js webpack
我正在尝试编写一个 webpack 加载器,其中一个要求是我需要在每个包中注入一次代码。
加载器中是否有办法检测我正在处理的模块是否是入口点?如果没有,是否有一种简单的方法可以为每个包注入一次代码?
【问题讨论】:
标签: javascript node.js webpack
您可以像正常注入代码一样注入代码。您的加载程序应该返回转换后的源代码,并要求您需要注入一次的代码。 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;
};
【讨论】:
这有用吗?
module.exports = function (content) {
if (this.options.entry == this.resourcePath)
content = 'var newCode = 10;\r\n\r\n' + content;
return content;
};
我只使用它在入口文件上注入代码。
【讨论】:
您不能在入口点上使用加载器(也不能依赖于入口点)。 所以如果你想通过加载器注入一些代码,你必须在每个入口点都需要它。
【讨论】: