从 Webpack 加载器中获取原始文件路径

she*_*nan 6 javascript json webpack webpack-loader

我正在构建一个自定义 Webpack 加载器。加载器做什么并不重要,但它以某种方式转换 JSON 并使用 JSON 中的路径来解析某些其他细节。在我的例子中,loader.js我需要一种获取正在加载的 JSON 文件的原始路径的方法,以便我可以正确解析其他路径。

采用这个简单的加载器和配置:

加载器.js

module.exports = function (source) {
  
  /* Do some file lookups based on source and modify source */
  this.callback(null, source)

}
Run Code Online (Sandbox Code Playgroud)

webpack.config.js


module.exports = {
  /* ... */
  module: {
    rules: [
      {
        test: /\.json$/i,
        use: ['loader'],
      },
    ],
  },
};
Run Code Online (Sandbox Code Playgroud)

加载程序正在工作(正在使用),但我添加的任何业务逻辑都需要具有路径感知能力,以便它可以在文件系统上进行查找。

因为这是一个 JSON 加载器,所以source加载器函数中的 var 作为原始 JSON 内容传递,没有有关 JSON 是从哪个文件加载的详细信息。如何从加载器中获取路径信息,以便我可以根据其中的内容执行其他文件查找source

she*_*nan 10

事实证明,我正在寻找的属性可以通过执行上下文属性获得this,如resourcePath.

module.exports = function (source) {
  
  console.log('The original file was here:', this.resourcePath)

  this.callback(null, source)

}
Run Code Online (Sandbox Code Playgroud)

这是(相当稀疏的)文档

如果有人能想到更好/更面向未来的方法来获得这条路径,请随意发表评论或发布另一个答案。