2017-04-03 110 views
1

我正在爲基於cli的工具編寫一個NPM模塊。有人安裝軟件包後,我需要閱讀他們的package.json文件。我知道如何在語法中讀取文件。我的問題是,我如何一致地檢索package.json文件,並且應該使用相對路徑還是絕對路徑。NPM模塊 - 如何利用package.json文件?

因此,在安裝後,我的代碼將某處駐留在node_modules文件夾中:

package.json // I need to require this file 
node_modules/ 
    ↳ my-package/ 
    ↳ dist/ 
     ↳ my-package.js // the actual file running the code 

任何建議/最佳做法?或者它只是使用正確的文件路徑的問題?

+1

一般來說,我已經看到了它做的方式是在當前的工作目錄看(即其中CLI命令正在運行) - 你可以使用['process.cwd()'](https://nodejs.org/api/process.html#process_process_cwd) t目錄的路徑。如果在CWD中沒有package.json,我還看到不少工具會繼續搜索文件夾結構,因爲這意味着您可以從項目的子文件夾運行該命令,它仍然可以工作。 –

+0

太棒了!感謝您的反饋!下面的答案更具信息性,但瞭解您的解決方案很有用 – Nicky

回答

2

讀的package.json文件是很容易的,因爲你可以簡單地要求它:

var package = require('./path/to/package.json'); 

找到正確的路徑是什麼不是那麼簡單。

這是一個相當普遍的任務,沒有簡單的方法來實現核心模塊,但在npm上很少有模塊可以幫助你。

發現包-JSON:

輕鬆找到的package.json,你要搜索的文件。它spiders package.json文件的父目錄並正確讀取結果。它遵循ES6迭代器設計,因此它應該很容易實現。

父包JSON:

使用父包,JSON,你可以找到父的package.json,讓使用您的模塊的模塊的package.json。

查找和讀取包JSON:

查找並從的package.json文件中讀取數據。

參見:

相關問題