我尝试创建自定义加载程序以生成chrome扩展名的manifest.json文件,由于某种原因,我无法访问"选项"对象通过loaderUtils因为this
是一个空对象...我还应该做些什么来确保loaderRunner调用我的loader函数并正确初始化this
?
清单-loader.js
const loaderUtils = require('loader-utils');
module.exports = (source) => {
const options = loaderUtils.getOptions(this);
console.log(this)
const env = options.env;
let APP_DOMAIN = env === 'production' ? 'production_domain' : 'http://localhost:3000';
let icons = env === 'production' ? ({
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
}) : ({ "128": "icon-dev128.png" });
let manifest_template = JSON.parse(source);
manifest_template.permissions.push(`${APP_DOMAIN}/*`);
manifest_template.content_scripts[0].matches.push(`${APP_DOMAIN}/*`)
manifest_template.icons = icons;
let indentation = this.minimize ? null : 2
return JSON.stringify(manifest_template, null, indentation) + '\n'
}
webpack.config.js
{
test: /manifest\.json$/,
use: {
loader: path.resolve('src/loaders/manifest-loader.js'),
options: {
env: `${env.NODE_ENV}`
}
}
}
答案 0 :(得分:1)
箭头函数() => {}
没有this
绑定,所以我应该使用function
声明。