設定
Oxlint は初期状態で動作しますが、多くのチームではローカル実行、エディタ、CI の間で整形の一貫性を維持するために、設定ファイル(.oxlintrc.json または oxlint.config.ts)をコミットしています。
このページでは、プロジェクト設定について焦点を当てます:ルール、カテゴリ、プラグイン、オーバーライド、共有設定です。
設定ファイルの作成
現在のディレクトリにスターター設定を生成するには(JSON形式):
oxlint --initOxlint は自動的に現在の作業ディレクトリに .oxlintrc.json または oxlint.config.ts があるかを確認します。明示的に設定ファイルを指定することもできます(この場合、ネストされた設定の検索が無効になります):
oxlint -c ./oxlintrc.json
# または
oxlint --config ./oxlintrc.json注意事項:
.oxlintrc.jsonはコメントをサポートします(jsoncと同様)。- 設定形式は ESLint v8 の形式(
eslintrc.json)と互換性を意識しています。 - ディレクトリ内では
.oxlintrc.jsonまたはoxlint.config.tsのいずれか一方を使用でき、両方を同時に使うことはできません。
最小限の設定例は以下の通りです:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"categories": {
"correctness": "warn"
},
"rules": {
"eslint/no-unused-vars": "error"
}
}TypeScript 設定ファイル(oxlint.config.ts)
Oxlint は oxlint.config.ts という名前の TypeScript 設定ファイルもサポートしています。
import { defineConfig } from "oxlint";
export default defineConfig({
categories: {
correctness: "warn",
},
rules: {
"eslint/no-unused-vars": "error",
},
});注意事項:
- ファイル名は
oxlint.config.tsでなければなりません(--configで渡す場合も含む)。 - デフォルトエクスポートはオブジェクトでなければならず、型付けのために
defineConfigで囲む必要があります。 - TypeScript 設定ファイルは、ノードベースの
oxlintパッケージ(JSランタイム)が必要です。スタンドアロンバイナリを使用している場合は、代わりに.oxlintrc.jsonを使用してください。 - TypeScript 設定ファイルは、TypeScript を実行できるノードランタイムが必要です。
設定ファイルの形式
設定ファイルは、次のいずれかの形式です:
- オブジェクト形式の JSON(
.oxlintrc.json) - デフォルトエクスポートが設定オブジェクトである TypeScript モジュール(
oxlint.config.ts)
最も一般的なトップレベルフィールドは以下の通りです:
rules:ルールの有効・無効化、重大度の設定、ルールオプションの設定。categories:類似した意図を持つルールのグループを有効化。plugins:追加のルールを提供する組み込みプラグインを有効化。jsPlugins:JavaScript プラグインを構成(実験的)。overrides:異なるファイルパターンに対して異なる設定を適用。extends:他のファイルから設定を継承。ignorePatterns:設定ファイルから追加のファイルを無視。env:一般的な環境用の事前定義されたグローバル変数を有効化。globals:カスタムグローバル変数を読み取り専用または書き込み可能として宣言。settings:複数のルールで共有されるプラグイン全体の設定。
完全なフィールドリストについては、設定ファイルリファレンス を参照してください。
ルールの設定
ルールは rules の下で設定されます。
ルール値は以下のいずれかです:
- 重大度(
"off"、"warn"、"error")、 - または
[重大度, オプション]の配列
ルール名がユニークな場合、プラグイン接頭辞なしで設定できます。たとえば、no-console は eslint/no-console と同じ意味です。
{
"rules": {
"no-alert": "error",
"oxc/approx-constant": "warn",
"no-plusplus": "off"
}
}重大度の値
Oxlint は ESLint 形式の重大度を受け入れます:
- ルールを許可:
"off"、"allow" - ルールに対して警告:
"warn" - ルールに対してエラー:
"error"、"deny"
ルールオプション
ルールオプションを設定するには、配列を使用します:
{
"rules": {
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }]
}
}利用可能なすべてのルールおよびその設定オプションについては、ルールリファレンス を参照してください。
CLI から重大度をオーバーライド
すぐに試すための便利な方法として、コマンドラインから重大度を調整できます:
-A/--allow-W/--warn-D/--deny
引数は左から右に適用されます:
oxlint -D no-alert -W oxc/approx-constant -A no-plusplusカテゴリーでルールのグループを有効化
カテゴリを使うと、類似した意図を持つルールのグループを有効または無効にできます。デフォルトでは、Oxlint は correctness カテゴリのルールを有効にしています。
categories を使ってカテゴリを設定します:
{
"categories": {
"correctness": "error",
"suspicious": "warn",
"pedantic": "off"
}
}利用可能なカテゴリには以下があります:
correctness:明らかに誤りまたは無駄なコードsuspicious:誤りまたは無駄である可能性が高いコードpedantic:偽陽性が発生する可能性のある非常に厳格なルールperf:実行時パフォーマンスを向上させる目的のルールstyle:習慣的かつ一貫性のあるスタイルルールrestriction:特定のパターンや機能を禁止するルールnursery:開発中のルールで、変更される可能性があります
同じ -A、-W、-D オプションを使って、CLI でもカテゴリを変更できます:
oxlint -D correctness -D suspiciousプラグインの設定
プラグインは利用可能なルールのセットを拡張します。
Oxlint は、多数の一般的なプラグインを、Rust でネイティブにサポートしています。これにより、大きな JavaScript 依存関係ツリーなしで広範なルールカバーが可能です。詳細は ネイティブプラグイン を参照してください。
plugins を使ってプラグインを設定します。plugins を設定すると、デフォルトのプラグインセットが上書きされるため、有効にしておきたいすべての項目を含める必要があります:
{
"plugins": ["unicorn", "typescript", "oxc"]
}すべてのデフォルトプラグインを無効にするには:
{
"plugins": []
}プラグインの詳細や --import-plugin などの CLI フラグについては、ネイティブプラグイン を参照してください。
JavaScript プラグインの設定(実験的)
Oxlint は jsPlugins を通じて、JavaScript プラグインもサポートしています。これは既存の ESLint プラグインとの互換性や高度な統合を目的としています。
注意事項:
- JavaScript プラグインは実験的であり、semver の対象ではありません。
JavaScript プラグインは文字列として宣言できますし、エイリアスを持つオブジェクトとしても宣言できます:
{
"jsPlugins": [
"eslint-plugin-playwright",
{ "name": "my-eslint-react", "specifier": "eslint-plugin-react" }
]
}一部のプラグイン名は、それらがネイティブに Rust で実装されているため(例:react、unicorn、typescript、oxc、import、jest、vitest、jsx-a11y、nextjs)予約されています。予約済みプラグインの JavaScript 版が必要な場合は、衝突を避けるために独自の name を割り当ててください。
詳細については、JavaScript プラグイン を参照してください。
ファイルパターンごとに設定を適用
overrides を使って、テストファイル、スクリプト、またはタイプスクリプト専用のパスなど、異なるファイルに対して異なる設定を適用できます。
overrides はオブジェクトの配列です。各オーバーライドには以下の項目を含められます:
files:globパターンrules:ルール設定(トップレベルのrulesと同じ構造)env:環境設定(トップレベルのenvと同じ構造)globals:グローバル設定(トップレベルのglobalsと同じ構造)plugins:オプションで、このオーバーライドで有効にするプラグインを変更jsPlugins:このオーバーライド用の JavaScript プラグイン(実験的)
例:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"rules": {
"no-console": "error"
},
"overrides": [
{
"files": ["scripts/*.js"],
"rules": {
"no-console": "off"
}
},
{
"files": ["**/*.{ts,tsx}"],
"plugins": ["typescript"],
"rules": {
"typescript/no-explicit-any": "error"
}
},
{
"files": ["**/test/**"],
"plugins": ["jest"],
"env": {
"jest": true
},
"rules": {
"jest/no-disabled-tests": "off"
}
}
]
}共有設定を継承
extends を使って、他の設定ファイルから設定を継承できます。
extends 内のパスは、extends を宣言している設定ファイルからの相対パスとして解決されます。設定は最初から最後までマージされ、後ろにあるエントリが前にあるものを上書きします。
{
"extends": ["./configs/base.json", "./configs/frontend.json"]
}import baseConfig from "./configs/base.ts";
import frontendConfig from "./configs/frontend.ts";
import { defineConfig } from "oxlint";
export default defineConfig({
extends: [baseConfig, frontendConfig],
});環境とグローバル変数の設定
env を使って、ブラウザや node などの一般的な環境用の事前定義されたグローバル変数を有効化します。
globals は、プロジェクト固有のグローバル変数を宣言し、読み取り専用または書き込み可能としてマークしたり、通常は存在するはずのグローバル変数を無効化できます。
{
"env": {
"es6": true
},
"globals": {
"MY_GLOBAL": "readonly",
"Promise": "off"
}
}globals は以下の値を受け入れます:
"readonly"または"readable"またはfalse"writable"または"writeable"またはtrue"off"でグローバル変数を無効化
プラグインの設定
settings を使って、複数のルールで共有されるプラグイン全体の設定を指定します。
例(モノレポ + React + jsx-a11y):
{
"settings": {
"next": {
"rootDir": "apps/dashboard/"
},
"react": {
"linkComponents": [{ "name": "Link", "linkAttribute": "to" }]
},
"jsx-a11y": {
"components": {
"Link": "a",
"Button": "button"
}
}
}
}次のステップ
- ファイルの無視:ファイルやパターンの無視、
.gitignoreおよび.eslintignoreワークフロー、シンボリックリンクの振る舞い。 - インライン無視コメント:インラインでの抑制とスコープ付き例外。
- ネストされた設定:モノレポとパッケージ単位の設定。
- 設定ファイルリファレンス:完全なスキーマとフィールドドキュメント。
- CLIリファレンス:すべてのフラグと出力形式の完全リスト。
