将变量注入webpack

时间:2015-01-26 06:03:20

标签: javascript requirejs commonjs webpack

我试图将一个变量注入我的webpack包中的每个模块,以获得每个文件的JS错误的调试信息。我已启用

node: {
   __filename: true
}

Current file path in webpack

在我的webpack.config中,但我想注入类似

的东西
var filename = 'My filename is: ' + __filename;
在编译之前

进入每个模块。我已经看到了带有raw选项的Banner Plugin,但似乎这只会在webpack闭包之外注入横幅,而不是我希望将脚本注入每个模块的结果。

2 个答案:

答案 0 :(得分:17)

我使用变量来解析webpack.config.js文件中的几个变量:

plugins: [
    new webpack.DefinePlugin({
      ENVIRONMENT: JSON.stringify(process.env.NODE_ENV || 'development'),
      VERSION: JSON.stringify(require('./package.json').version)
    })
]

它可能不够动态,但如果是,那么您可以绕过该加载程序解决方案。

答案 1 :(得分:2)

编写自己的装载程序:

<强> MY_PROJECT / my_loaders /文件名-loader.js:

module.exports = function(source) {
  var injection = 'var __filename = "' + this.resourcePath + '";\n';
  return injection + source;
};

将其添加到您的管道中,并确保添加配置:

resolveLoader: {
  modulesDirectories: ["my_loaders", "node_modules"]
}

请参阅how to write a loader上的文档。