サクッと設定データを永続化できるnpmパッケージconfの解説
AIの普及で自作ツールを作ることが増えてきました。「この設定値は別途ファイルとして保存したいな」というケースがあります。今回はそんなときに便利なnpmパッケージconfを解説します。
confとは
confはいわゆるkey-value型でデータを保存・取得できるライブラリです。
しくみは単純で、OSごとに指定した場所にJSONファイルとしてデータを管理してくれます。
ざっくり見てみる
コードはこんな感じ。
import Conf from "conf";
const config = new Conf({ projectName: "foo" });
config.set("hoge", 1);console.log(config.get("hoge"));これを実行すると、規定の場所にJSONファイルが作成されます。Macなら~/Library/Preferences/foo-nodejs/config.jsonです。
{ "hoge": 1}インストール
使いたいプロジェクトでインストールしてください。
npm install conf使い方
projectNameは文字どおりプロジェクト名を書きます。この名前を使ってファイルが<プロジェクト名>-nodejs/config.jsonのように保存されます。
import Conf from 'conf';
const config = new Conf({projectName: 'foo'});値の保存
config.set(キー名, 値)で値を保存できます。
config.set("hoge", 1);次のように一括保存もできます。
config.set({ foo: "fooooooooo", bar: "baaaar" });値の取得
config.get(キー名)で値を取得できます。
config.get("hoge");値の削除
config.delete(キー名)で値を削除できます。
config.delete("hoge");一括全削除はconfig.clear()です。
キーのネスト
次のように.を使ってキーはネストできます。
config.set("foo.bar.buz", 1);{ "foo": { "bar": { "buz": 1 } }}キーを数字にすると配列になること に注意しましょう。
config.set("momo.0", "piyo");{ "momo": [ "piyo" ]}キーで数字を使いたいなら、prefixやsuffixをつければOKです。
config.set("momo.pane_0", "piyo");{ "momo": { "pane_0": "piyo" }}以上、confの解説でした。editpromptという自作CLIの中でファイルとして永続化が必要になって触りましたが、めっちゃ使いやすいです。こういうのを自分で用意すると「ファイルどこにする?」「キーの指定方法は……」みたいな 作りたいツールの本質ではない所に時間が割かれてしまいます 。confを使えばサクッと実現できて便利です。