npm (ve iplik) package.json dosyasından çok sayıda veriyi ortam değişkenleri olarak betiklere aktarır . npm run env
Hepsini görmek için kullanın . Bu, https://docs.npmjs.com/misc/scripts#environment içinde belgelenmiştir ve yalnızca "yaşam döngüsü" komut dosyaları için prepublish
değil, aynı zamanda yürüttüğü komut dosyaları için de geçerlidir npm run
.
Bu iç koda erişebilirsiniz (örn process.env.npm_package_config_port
. JS'de), ancak komut dosyalarını çalıştıran kabuk tarafından zaten kullanılabilir, böylece $npm_...
"komut dosyalarında" (unix sözdizimi, pencerelerde çalışmayabilir mi?)
"Yapılandırma" bölümü bu kullanılmak üzere tasarlanmıştır görünüyor:
"name": "myproject",
...
"config": {
"port": "8010"
},
"scripts": {
"start": "node server.js $npm_package_config_port",
"test": "wait-on http://localhost:$npm_package_config_port/ && node test.js http://localhost:$npm_package_config_port/"
}
Bu "yapılandırma" alanlarının önemli bir kalitesi, kullanıcıların package.json'u değiştirmeden bunları geçersiz kılabilmesidir .
$ npm run start
> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port
Serving on localhost:8010
$ npm config set myproject:port 8020
$ git diff package.json # no change!
$ cat ~/.npmrc
myproject:port=8020
$ npm run start
> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port
Serving on localhost:8020
Bkz. Npm yapılandırma ve iplik yapılandırma belgeleri.
O iplik okur görünür ~/.npmrc
böylece npm config set
hem etkiler, ancak yarn config set
yazar ~/.yarnrc
bu yüzden sadece iplik göreceksiniz, :-(