web-dev-qa-db-ja.com

package.jsonの変数へのOSに依存しないアクセス

Npmスクリプトで変数にアクセスするには、package.jsonで次のようなことをします。

"scripts": {
    "preinstall": "echo ${npm_package_name}"
}

問題は、%npm_package_name%を使用する必要があるWindowsではなく、Unixでのみ機能することです。

このOSに依存しない方法はありますか?コマンドを呼び出す前に、npmがそのような変数の展開を行うことができればよいでしょう。

23
Adrian Ber

クロスプラットフォームにするには、 cross-var

"scripts": {
    "preinstall": "cross-var echo ${npm_package_name}"
}
31
Mark Woon

OSに依存しない既知の方法はありません。

適切な回避策は、ノードスクリプト内でコマンドを実行することです。

まず、preinstallコマンドを変更してノードスクリプトを実行します。

"scripts": {
    "preinstall": "node nameEcho.js"
}

次に、nameEcho.jsファイルでコマンドを定義します。

// require the package.json file
var pjson = require('./package.json');

// echo the package's name
console.log(pjson.name);
3
gnerkus