npmとpackage.jsonの小ネタ - 設定値を埋め込む
大分前に調べてメモしていたのだけど、記事として書いていなかったようなので書いておこうかと。
package.jsonにconfigというキーで以下に設定値などを書いて、npm startで起動すると設定値がprocess.envに設定されます。
node-configとか使うほどじゃないし、別の設定用のJSONファイルを用意してrequireする程でもないし、という場合には良いかもしれません。
npm startで起動しないと動作しないよ、という風にも出来るかも。
package.json
{ "name": "aaa", "version": "0.0.0", "scripts": { "start": "node index.js" }, "config": { "int": 1234, "str": "conf" } }
index.js
#!/usr/bin/env node console.log(process.env.npm_package_config_int); console.log(process.env.npm_package_config_str);
なんてファイルを用意して、npm startで実行すると……
$ npm start 1234 conf
なんて出力になると思います。
configの下に配列やらオブジェクトを追加しても見れなかったのは、そこまで複雑なのは扱わないということなのか、なんなのか……
追記:
配列とかも扱えるみたい。
{ "name": "aaa", "version": "0.0.0", "scripts": { "start": "node index.js" }, "config": { "str": "conf", "arr": [ 1, 2, 3, 4, 5 ], "obj": { "a": 1, "b": 2, "c": 3 } } }
#!/usr/bin/env node console.log(process.env.npm_package_config_arr_0); console.log(process.env.npm_package_config_arr_1); console.log(process.env.npm_package_config_arr_2); console.log(process.env.npm_package_config_arr_3); console.log(process.env.npm_package_config_arr_4); console.log(process.env.npm_package_config_obj_a); console.log(process.env.npm_package_config_obj_b); console.log(process.env.npm_package_config_obj_c);
とか。普通にpackage.jsonをrequireした方がいいわ……