設定ファイルの一元管理 onecfg の紹介
はじめに
この資料は Rust 製のコマンドラインツール onecfg について紹介するものです。
Rust製の環境構築やツールのインストール方法については以下を参照してください
onecfg
1つの設定ファイルでJSON/YAML/TOMLなどのファイル生成
GitHub - clebert/onecfg-rust: One config file to generate them all.
使用方法
簡単に言うと、onecfg ファイル(例:onecfg.json) から各種の設定ファイつを自動生成するためのものでう。
% onecfg onecfg.json
生成するコンフィグファイルの形式を定義する
{
"defines": {
".prettierrc.json": {"format": "json"}
}
}
特定の設定ファイルにのみ適用されるパッチの宣言
{
"patches": {
".prettierrc.json": [
{"value": {"printWidth": 80}},
{"value": {"singleQuote": true}}
]
}
}
onecfgファイルの拡張(定義済みのonecfg-lib)の便利な利用を含む
{
"extends": [
"<https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-editorconfig.json>",
"<https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-git.json>",
"<https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-prettier.json>",
"<https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-vscode.json>"
]
}
注:JSON Schemaを使用してonecfgファイルを検証したり、エディターでオートコンプリートを有効にすることができます。
設定ファイル
テキスト
{
"defines": {
"test.txt": {"format": "text"}
},
"patches": {
"test.txt": [{"value": "foo"}, {"value": "bar"}]
}
}
bar
JSON
{
"defines": {
"test.json": {"format": "json"}
},
"patches": {
"test.json": [{"value": {"foo": "bar"}}, {"value": {"baz": "qux"}}]
}
}
{
"baz": "qux",
"foo": "bar"
}
TOML
{
"defines": {
"test.toml": {"format": "toml"}
},
"patches": {
"test.toml": [{"value": {"foo": "bar"}}, {"value": {"baz": "qux"}}]
}
}
baz = "qux"
foo = "bar"
YAML
{
"defines": {
"test.yml": {"format": "yaml"}
},
"patches": {
"test.yml": [{"value": {"foo": "bar"}}, {"value": {"baz": "qux"}}]
}
}
baz: qux
foo: bar
ignorefile
{
"defines": {
".testignore": {"format": "ignorefile"}
},
"patches": {
".testignore": [{"value": ["foo", "bar"]}, {"value": ["baz"]}]
}
}
foo
bar
baz
onecfg-lib
EditorConfig
EditorConfigは、様々なエディタやIDEで同じプロジェクトに携わる複数の開発者が、一貫したコーディングスタイルを維持できるようにします。EditorConfigプロジェクトは、コーディングスタイルを定義するためのファイルフォーマットと、エディターがファイルフォーマットを読み込んで定義されたスタイルを遵守するためのテキストエディタプラグインのコレクションで構成されています。EditorConfigファイルは簡単に読むことができ、バージョン管理システムともうまく連動します。
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-editorconfig.json"
]
}
ESLint
ESLint はコードを静的に解析し、問題を素早く見つけます。ほとんどのテキストエディタに組み込まれており、継続的インテグレーションパイプラインの一部としてESLintを実行することができます。
ECMAScriptのモジュールを対象としたルールで、CommonJSを禁止しています。
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-editorconfig.json"
]
}
npm の依存モジュール
npm script
% NODE_OPTIONS=--experimental-vm-modules jest --silent
Node.js
Node.jsは、オープンソースで、クロスプラットフォームなJavaScript実行環境です。
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-node.json"
]
}
preact
同じモダンなAPIを持つReactの高速な3kB代替品
Reactとは異なり、PreactはTypeScriptとSWCの設定にパッチを当てる必要があります。
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-preact.json"
]
}
npm 依存モジュール
Prettier
ほとんどのエディタに統合可能なコードフォーマッター
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-prettier.json"
]
}
npm 依存モジュール
eslint-config-prettier( .eslintrc.json が定義済みなら)
Rust
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-prettier.json"
]
}
SWC
ES2022とECMAScriptモジュール用のコンフィグです。
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-swc.json"
]
}
npm 依存モジュール
TypeScript
ES2022 と ECMAScript モジュールのための厳密な設定です。
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-typescript.json",
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-typescript-emit.json",
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-typescript-eslint.json"
]
}
npm 依存モジュール
@swc/jest (if jest.config.json is defined)
@typescript-eslint/eslint-plugin((もし.eslintrc.json を定義していたら)
@typescript-eslint/parser (もし .eslintrc.json を定義していたら)
Visual Studio Code
Microsoft社が公開している無料で使用できる高機能な絵ディア
onecfg
{
"extends": [
"https://raw.githubusercontent.com/clebert/onecfg-lib/main/lib/onecfg-vscode.json"
]
}
ドキュメント
onecfg のヘルプメッセージ
% onecfg --help
Usage: onecfg <FILE_PATH>
Arguments:
<FILE_PATH>
Options:
-h, --help Print help
-V, --version Print version
ライセンス
onecfg および onecfg-lib は次のいずれかでライセンスが適用されます。
どちらを選ぶかは任意です。
Apache License, Version 2.0
MIT license