サクッと設定データを永続化できる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です。

~/Library/Preferences/foo-nodejs/config.json
{
"hoge": 1
}

インストール

使いたいプロジェクトでインストールしてください。

Terminal window
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);
config.json
{
"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を使えばサクッと実現できて便利です。