我目前正在开发一个 webpack 插件,我正在尝试找到一种方法来读取package.json
调用我的插件的 repo。到目前为止,我尝试的任何方法都会导致读取 plugins package.json
。
有没有办法直接访问该文件?
我目前正在开发一个 webpack 插件,我正在尝试找到一种方法来读取package.json
调用我的插件的 repo。到目前为止,我尝试的任何方法都会导致读取 plugins package.json
。
有没有办法直接访问该文件?
你不能确定消费者的 package.json 在哪里。但是你可以尝试这种方法,这里使用了 webpack 上下文:
apply(compiler: Compiler) {
compiler.hooks.beforeRun.tap('HelloWorldPlugin', () => {
console.log(`Path where webpack was executed: ${ compiler.options.context }`);
console.log(require(`${ compiler.options.context }/package.json`));
})
}
另外两种方法也假设消费者的 package.json 与 webpack 配置位于同一目录中:
// via **compiler.inputFileSystem**
apply(compiler: Compiler) {
compiler.hooks.beforeRun.tap('HelloWorldPlugin', () => {
console.log(compiler.inputFileSystem.readFileSync('./package.json').toString());
})
}
// via **process.cwd()**
apply(compiler: Compiler) {
compiler.hooks.beforeRun.tap('HelloWorldPlugin', () => {
console.log(require('path').resolve(process.cwd(), 'package.json'));
})
}
或者你可以通过消费者的 webpack.config.js 中的参数传递它:
plugins: [
new HelloWorldPlugin({
packageJsonFile: path.resolve(__dirname, './package.json'),
})
]