2016-04-11 5 views
2

コマンドラインでpackage.jsonから詳細を取得します。例:ローカルのpackage.jsonからパッケージ名を取得するnpm cliオプションはありますか?

$ 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) {}" 

私は書く必要はありません(と維持する)コードは、最高のコードです。また、私はこれをシェル統合に使用したいので、それは多く実行されます。ネイティブの実装がより高速になる可能性があります。

答えて

5

NPMには、それが格納する環境変数があります。コンソールにnpm run envと入力すると表示されます。

これを使用して、グリフすることで必要な変数をnpm_package_nameにすることができますが、これは "npm_package_name = your_package_name"となります。

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

このコマンドは、パッケージ名が残ります。それを回避する

一つの方法は、コマンドで「=」文字の後に部分文字列を取得することです。

EDIT:
これを実行する別の方法は、単純にecho $npm_package_nameは、あなたのシェルコマンドでそのスクリプトを実行している、あなたのpackage.jsonでスクリプトを追加することです。

あなたpackage.jsonは次のようになります:

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

を次に入力しnpm run getName -s

関連する問題