将变量注入webpack

dto*_*efp 10 javascript commonjs requirejs webpack

我正在尝试将一个变量注入我的webpack包中的每个模块,以便获得每个文件的JS错误的调试信息.我启用了

node: {
   __filename: true
}
Run Code Online (Sandbox Code Playgroud)

webpack中的当前文件路径

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

var filename = 'My filename is: ' + __filename;
Run Code Online (Sandbox Code Playgroud)

在编译之前进入每个模块.我已经看到了带有选项的Banner插件,raw但似乎这只会在webpack闭包之外注入横幅而不是我想要的将脚本注入每个模块的结果.

Mar*_*sen 19

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

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

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


Ric*_*ven 2

编写自己的加载器:

my_project/my_loaders/filename-loader.js:

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

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

resolveLoader: {
  modulesDirectories: ["my_loaders", "node_modules"]
}
Run Code Online (Sandbox Code Playgroud)

请参阅有关如何编写加载程序的文档。