package.jsonで値を展開する
2018 / 01 / 04
Edit
🚨 This article hasn't been updated in over a year
💁♀️ This post was copied from
Hatena Blog
🎍 今年初の記事です 🎍
そういえばこんな機能あったなーって感じだったので記事にしてみました。
本当は今年最初の記事用意していたのですが、まだ終わってないので後ほど。。
今回は、タスクの start と build に同じ変数を webpack へ渡すために共通化したくて、量が多くなってきたのでリファクタリングしました。
手順
$npm_package_
に package.json に書いた key をつなげるとそれの value 展開されます。
コンソール上では、展開されませんが、JS 上では展開されます。
// 確認用のJS
console.log(process.argv[2]);
$ npm run main
> node main.js $npm_package_foo
bar
文字列の場合
{
"foo": "bar",
"scripts": {
"main": "node main.js $npm_package_foo"
}
}
オブジェクトの場合
オブジェクトを渡すことはできないので、末端まで指定する必要があります。
{
"foo": {
"bar": 1
},
"scripts": {
"main": "node main.js $npm_package_foo_bar"
}
}
もし、$npm_package_foo
と書いた場合は、undefined
となります。
配列の場合
配列を渡すことはできないので、添字を指定する必要があります。
{
"foo": ["bar"],
"scripts": {
"main": "node main.js $npm_package_foo_0"
}
}
もし、$npm_package_foo
と書いた場合は、undefined
となります。
まとめ
$npm_package_
というプレフィックスが使える- 必ず値はプリミティブでなければなりません