API
このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
Prettierをプログラムから実行したい場合、このページを参照してください。
import * as prettier from "prettier";
公開APIはすべて非同期です。何らかの理由で同期バージョンが必要な場合は、@prettier/syncの使用を検討してください。
prettier.format(source, options)
formatはPrettierを使用してテキストをフォーマットします。options.parserはフォーマット対象の言語に合わせて設定する必要があります(使用可能なパーサーの一覧を参照)。代わりにoptions.filepathを指定すると、Prettierがファイル拡張子からパーサーを推測します。その他のオプションを指定してデフォルトを上書きできます。
await prettier.format("foo ( );", { semi: false, parser: "babel" });
// -> 'foo()\n'
prettier.check(source [, options])
checkは指定されたオプションでファイルがPrettierによってフォーマットされているかを確認し、Promise<boolean>を返します。これはCLIの--checkや--list-differentパラメータと同様で、CI環境でPrettierを実行する際に有用です。
prettier.formatWithCursor(source [, options])
formatWithCursorはコードをフォーマットすると同時に、カーソル位置を未フォーマットのコードからフォーマット後のコードに変換します。エディタ統合でコードフォーマット時のカーソル移動を防ぐのに有用です。
カーソル位置を指定するため、cursorOffsetオプションを設定する必要があります。
await prettier.formatWithCursor(" 1", { cursorOffset: 2, parser: "babel" });
// -> { formatted: '1;\n', cursorOffset: 1 }
prettier.resolveConfig(fileUrlOrPath [, options])
resolveConfigはソースファイルの設定を解決するために使用します。第一引数にファイルパスまたはURLを渡します。設定検索はファイルのディレクトリから開始し、上位ディレクトリへ向かって行われます。検索をスキップしたい場合は、設定ファイルのパスをoptions.configに直接指定できます。返されるPromiseは次のいずれかに解決します:
-
設定ファイルが見つかった場合:オプションオブジェクト
-
ファイルが見つからなかった場合:
null
設定ファイルの解析でエラーが発生した場合、Promiseは拒否されます。
options.useCacheがfalseの場合、すべてのキャッシュが無効化されます。
const text = await fs.readFile(filePath, "utf8");
const options = await prettier.resolveConfig(filePath);
const formatted = await prettier.format(text, {
...options,
filepath: filePath,
});
options.editorconfigがtrueでプロジェクトに.editorconfigファイルが存在する場合、Prettierはそのプロパティを対応する設定に変換します。この設定は.prettierrcなどによって上書きされます。現在サポートされているEditorConfigプロパティ:
-
end_of_line -
indent_style -
indent_size/tab_width -
max_line_length
prettier.resolveConfigFile([fileUrlOrPath])
resolveConfigFileは設定解決時に使用されるPrettier設定ファイルのパスを検索します(resolveConfig呼び出し時)。返されるPromiseは次のいずれかに解決します:
-
設定ファイルのパス
-
ファイルが見つからなかった場合:
null
設定ファイルの解析でエラーが発生した場合、Promiseは拒否されます。
検索はprocess.cwd()から開始します。fileUrlOrPathが指定された場合はそのディレクトリから開始します。
const configFile = await prettier.resolveConfigFile(filePath);
// you got the path of the configuration file
prettier.clearConfigCache()
Prettierが設定ファイルやプラグインを読み込む際、パフォーマンス向上のためにファイルシステム構造がキャッシュされます。この関数はキャッシュをクリアします。通常、前回のフォーマット以降にファイルシステムが変更されたことを検知したエディタ統合でのみ必要です。
prettier.getFileInfo(fileUrlOrPath [, options])
getFileInfoはエディタ拡張機能が特定のファイルをフォーマットする必要があるか判断するために使用できます。このメソッドはPromiseを返し、解決されると以下のプロパティを持つオブジェクトを返します:
{
ignored: boolean;
inferredParser: string | null;
}
fileUrlOrPathの型がstringまたはURLでない場合、Promiseは拒否されます。
options.ignorePath(string | URL | (string | URL)[])とoptions.withNodeModules(boolean)を設定するとignoredの値(デフォルトはfalse)に影響します。
指定されたfileUrlOrPathが無視される場合、inferredParserは常にnullになります。
options.plugins((string | URL | Plugin)[])にプラグインのパスを指定すると、PrettierコアがサポートしていないファイルのinferredParserを抽出できます。
options.resolveConfig(boolean、デフォルトtrue)をfalseに設定すると、Prettierは設定ファイルを検索しません。ファイルが無視されるかどうかのみを確認する場合に有用です。
prettier.getSupportInfo()
Prettierがサポートするオプション、パーサー、言語、ファイルタイプを表すオブジェクトに解決されるPromiseを返します。
サポート情報の構造は以下の通りです:
{
languages: Array<{
name: string;
parsers: string[];
group?: string;
tmScope?: string;
aceMode?: string;
codemirrorMode?: string;
codemirrorMimeType?: string;
aliases?: string[];
extensions?: string[];
filenames?: string[];
linguistLanguageId?: number;
vscodeLanguageIds?: string[];
isSupported?(options: { filepath: string }): boolean;
}>;
}
Prettierはfilepathがディスク上に存在することを保証できません。
API経由(例:prettier.format())で使用する場合、有効なパスかどうかも保証できません。
カスタムパーサーAPI(削除済み)
v3.0.0で削除(プラグインAPIに統合)
プラグインが導入される前は、Prettierにはカスタムパーサーと呼ばれる類似機能(より制限付き)がありました。この機能はPlugin APIのサブセットに過ぎなかったためv3.0.0で削除されました。以前これを使用していた場合は、以下の移行例を参照してください。
❌ カスタムパーサーAPI(削除済み):
import { format } from "prettier";
format("lodash ( )", {
parser(text, { babel }) {
const ast = babel(text);
ast.program.body[0].expression.callee.name = "_";
return ast;
},
});
// -> "_();\n"
✔️ プラグインAPI:
import { format } from "prettier";
import * as prettierPluginBabel from "prettier/plugins/babel";
const myCustomPlugin = {
parsers: {
"my-custom-parser": {
async parse(text) {
const ast = await prettierPluginBabel.parsers.babel.parse(text);
ast.program.body[0].expression.callee.name = "_";
return ast;
},
astFormat: "estree",
},
},
};
await format("lodash ( )", {
parser: "my-custom-parser",
plugins: [myCustomPlugin],
});
// -> "_();\n"
全般的に、この方法でのコードモッドは推奨されません。Prettierは空行の保持やコメントの付与など多くの処理でASTノードの位置情報を使用します。ASTが解析後に変更されると位置情報が同期されなくなり、予期せぬ結果を招く可能性があります。コードモッドが必要な場合はjscodeshiftの使用を検討してください。
削除されたカスタムパーサーAPIの一部として、以前は--parserオプションでparse関数をエクスポートするモジュールへのパスを渡せましたが、現在はプラグインをロードするために--pluginCLIオプションまたはpluginsAPIオプションを使用してください。