簡體   English   中英

如何從 webpack 插件中讀取 package.json

[英]How to read package.json from webpack plugin

我目前正在開發一個 webpack 插件,我正在嘗試找到一種方法來讀取調用我的插件的 repo 的package.json 到目前為止,我嘗試的任何方法都會導致讀取插件package.json

有沒有辦法直接訪問該文件?

這是遲到的答案,但我希望這對其他人有幫助。 我在同樣的事情上苦苦掙扎,最終從process.env.npm_package_json讀取路徑並以這種方式創建變量:

let packageJson = JSON.parse(require('fs').readFileSync(process.env.npm_package_json).toString());
let author = packageJson.author;     // Your Name
let version = packageJson.version;   // 1.0.0

你不能確定消費者的 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'),
    })
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM