LoginSignup
4
5

More than 5 years have passed since last update.

Nodeプロジェクトで設定を動的に保存するnpm-storeを作った

Last updated at Posted at 2015-06-07

Nodeプロジェクトで設定を動的に保存するnpm-storeを作りました。

モチベーション

そもそも、単純に値を保存するだけならnpm configがあります。静的な設定ならpackage.jsonに書けばそれで済みます。しかし、package.jsonに書く場合はリポジトリに保管する必要があるため、開発者全員が同じ設定値を参照してしまうという問題があります。
それなら、npm config setを使って動的に設定値を保存できればすべては解決・・・といきたかったのですが、この場合は設定値がプロジェクトを飛び越えて全プロジェクト共通の値として保存されてしまいます。

$ npm config set foo 1
$ cat ~/.npmrc 
foo=1

これではプロジェクト間で同じ名前の設定を作ると混線してしまうので、プロジェクト単位に設定値を保存できる何かが欲しい!という訳で作成することにしました。

使い方

保存

$ node_modules/.bin/store set foo 1

取得

$ node_modules/.bin/store get foo
1

削除

$ node_modules/.bin/store delete foo

npmからの呼び出し

package.json
"scripts": {
  "store": "store set foo 1"
}

一応、コマンドラインからの呼び出し方も書きましたが、基本的にはnpmで実行する想定です。

package.json
"scripts": {
  "store": "echo 1 | store set foo"
}

上記のような形でコマンドの実行結果を特定のキーで保存します。

使い道

とはいえ、動的に設定を保存したいみたいなことは、そうそうないです。(むしろそんな要望が出たら設計を疑った方が良いレベル)
それじゃあ自分は何でそんなものを作ったの?という所でいうと

AWS Lambdaで開発するさいにCfnを実行して、その結果を保持したいからです。
例えばCfnで作成したリソースを設定ファイルに保存したり、開発者一人につきCfnで作成する環境を一つに制限したり、作成した環境を削除するためにStackIdを保存しておきたいみたいな用途ですね。

たぶん、こういった開発用のインフラ構築関連だと需要はありそうだなと思います。単純なビルドベースでは絶対に使わないというか使っていたら怒るレベルだと思いますが。

おわりに

取り敢えず作って、モチベーションを晒してみましたが実際はどうなんでしょうね?
インフラ構築関連で使うにしても、もっと他にやり方がありそうな気もします。

何か良いやりかたご存知の方がいらしたら、ぜひ教えてください。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5