package.jsonで値を展開する
🎍今年初の記事です🎍
そういえばこんな機能あったなーって感じだったので記事にしてみました。
本当は今年最初の記事用意していたのですが、まだ終わってないので後ほど。。
今回は、タスクの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_
というプレフィックスが使える- 必ず値はプリミティブでなければなりません。