コンテンツにスキップ

プラグイン

コア indentier パッケージは JavaScript と TypeScript のみをネイティブにサポートします。その他の言語はプラグインパッケージで対応します。

プラグイン言語拡張子ruby モード宣言
(コア)JavaScript / TypeScript.js .cjs .mjs .jsx .ts .cts .mts .tsxlet end=null;
@indentier/plugin-rustRust.rsconst end:()=();
@indentier/plugin-goGo.govar end any=nil
@indentier/plugin-cC / C++.c .h .cpp .hppvoid*end=0;
@indentier/plugin-phpPHP.php$end=null;
@indentier/plugin-javaJava.java
@indentier/plugin-csC#.cs
@indentier/plugin-cssCSS / SCSS / Less.css .scss .less

プラグインをインストールする

Section titled “プラグインをインストールする”
Terminal window
# Indentier と一緒にプラグインをインストール
npm i -D @indentier/plugin-rust @indentier/plugin-go
# 設定ファイルに追記
.indentierrc.json
{
"plugins": ["@indentier/plugin-rust", "@indentier/plugin-go"]
}

CLI は設定から自動的にプラグインを読み込みます。API から使う場合は loadPlugins() を手動で呼び出してください:

import { format, loadPlugins, getPlugin } from 'indentier'
await loadPlugins(['@indentier/plugin-rust'])
const plugin = getPlugin('.rs')
const output = format(source, options, '.rs', plugin)

プラグインは IndentierPlugin インターフェースを実装したシンプルなオブジェクトです:

import type { IndentierPlugin } from 'indentier'
const plugin: IndentierPlugin = {
// このプラグインが処理する拡張子(小文字、先頭にドット)
extensions: ['.rs'],
// ruby モードが有効かどうか
rubyCompatible: true,
// ruby モード時にファイル先頭に注入する宣言文
declarationTemplate: 'const end:()=();',
// (省略可)end 文の本体をカスタマイズ。デフォルトは variableName。
getEndStatement: (variableName) => variableName,
// (省略可)宣言行を挿入する位置。
// パース済み行配列を受け取り挿入インデックスを返す。
// デフォルト: 0(ファイル先頭)。下の例は最初の `<?` 行の直後に挿入。
declarationInsertIndex: (lines) => {
for (let i = 0; i < lines.length; i++) {
if (lines[i].body.trimStart().startsWith('<?')) return i + 1
}
return 0
},
}
export default plugin

@indentier/plugin-<name> または任意のパッケージ名で公開し、設定の plugins に追加するだけで使えます。