2016-04-11 78 views
2

我想從命令行中獲取package.json的詳細信息。一個例子:是否有npm cli選項從本地package.json獲取包名?

$ cd ~/my-node-package 
$ npm commandiamlookingfor package name 
my-package-name 

我知道這將是一個瑣碎的腳本來寫。我可以這樣做:

node -e "try {var pack=require('./package.json'); console.log(pack.name); } catch(e) {}" 

但是,我不必編寫(和維護)的任何代碼都是最好的代碼。另外,因爲我想用它來進行shell集成,它會運行很多;本地實現可能會更快。

回答

5

NPM具有它存儲的環境變量。您可以在控制檯中輸入npm run env來查看這些信息。

您可以通過grep找到需要的變量來獲取您需要的變量npm_package_name,但會給您留下「npm_package_name = your_package_name」。

一種方式來解決這將是「=」字符與命令後得到的字符串:

cut -d "=" -f 2 <<< $(npm run env | grep "npm_package_name")

該命令給你留下的包名。

編輯:
另一種方式做,這是通過增加你的package.json一個腳本,僅僅是echo $npm_package_name然後運行在你的shell命令腳本。

package.json會是這個樣子:

{ 
    "name": "your_package_name", 
    "scripts": { 
     "getName": "echo $npm_package_name" 
    } 
} 

然後鍵入npm run getName -s

相關問題