Npmスクリプトで変数にアクセスするには、package.json
で次のようなことをします。
"scripts": {
"preinstall": "echo ${npm_package_name}"
}
問題は、%npm_package_name%
を使用する必要があるWindowsではなく、Unixでのみ機能することです。
このOSに依存しない方法はありますか?コマンドを呼び出す前に、npmがそのような変数の展開を行うことができればよいでしょう。
クロスプラットフォームにするには、 cross-var
:
"scripts": {
"preinstall": "cross-var echo ${npm_package_name}"
}
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);