oxlint について
JavaScript と TypeScript のプロジェクトで oxlint を使うためのスキルです。プロジェクトの判定、設定、診断、安全な自動修正、CI 向け出力、ESLint からの移行を扱います。
主な機能
- 01JavaScript・TypeScript の lint
- 02ルールとプラグインの設定
- 03安全な自動修正
- 04CI 向け出力形式
- 05ESLint 移行ガイド
活用シーン
- 01変更後のコードチェック
- 02指定したソースファイルの lint
- 03モノレポのルール設定
- 04ESLint 設定の移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ midudev/ autoskills --skill oxlintインストール後、Claude Code で/oxlintを入力して読み込まれたか確認します。
詳細
Oxlint — 高性能 JS/TS リンター
Oxlint は ESLint より 50~100 倍高速です。ESLint コア、TypeScript、React、Jest、Unicorn、jsx-a11y などを網羅する 690 以上のルールが用意されています。デフォルトでは、誤りや危険、無意味なコードを検出する、信頼性の高い正確性チェックを優先します。そのため、誤検知に悩まされることなくチームで導入できます。
検出
リンティングの前に、次のいずれかがあるか確認し、プロジェクトで oxlint が使われていることを確かめてください。
package.jsonの devDependencies/dependencies にoxlintがある- プロジェクトのルートに
.oxlintrc.jsonファイルがある - プロジェクトのルートに
oxlint.config.tsファイルがある package.jsonのoxlintまたはlintスクリプトでoxlintが参照されている
いずれも存在しない場合、そのプロジェクトでは oxlint を使用していません。実行しないでください。
Oxlint の実行
コード変更後
作業内容を確認するため、oxlint を実行してください。プロジェクトの npm スクリプトがある場合は、そちらを優先してください。
# If package.json has a lint script using oxlint
npm run lint
# Otherwise, run directly
npx oxlint
問題の自動修正
npx oxlint --fix
安全な自動修正には --fix を使用してください。ユーザーから明示的に依頼された場合を除き、--fix-dangerously は避けてください。安全でない変換が適用される可能性があります。
特定のファイルのリンティング
編集したファイルが少数の場合は、それらだけをリンティングできます。
npx oxlint src/components/Button.tsx src/utils/helpers.ts
出力の解釈
Oxlint は、たとえば (no-unused-vars) のように、ルール名を括弧内に含む診断を出力します。修正する際は、次の手順に従ってください。
- 診断メッセージを注意深く読みます。oxlint は正確で、対処につながる情報を提示します
- ルールを抑制するのではなく、根本的なコードの問題を修正します
- 診断が実際に誤検知である場合の最終手段としてのみ、
// oxlint-ignoreコメントを追加します
出力形式
CI やツールとの連携には、次のようにします。
npx oxlint --format json # Machine-readable JSON
npx oxlint --format github # GitHub Actions annotations
npx oxlint --format unix # Simple one-line-per-error format
設定
設定ファイルの作成
npx oxlint --init
これにより、.oxlintrc.json のひな形が生成されます。
設定ファイルの形式(.oxlintrc.json)
設定ファイルでは JSONC(コメント付き JSON)を使用します。主なセクションは次のとおりです。
{
// Enable/disable individual rules with severity levels
"rules": {
"no-unused-vars": "error",
"no-console": "warn",
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }]
},
// Enable groups of related rules by category
"categories": {
"correctness": "error", // Definitely-wrong code
"suspicious": "warn", // Probably-wrong code
"pedantic": "off", // Opinionated style checks
"perf": "warn", // Performance anti-patterns
"style": "off", // Cosmetic preferences
"restriction": "off", // Extra-strict rules (opt-in)
"nursery": "off" // Unstable/experimental rules
},
// Plugins to enable (setting this overwrites defaults, so list all you want)
"plugins": ["typescript", "unicorn", "oxc"],
// File-specific overrides
"overrides": [
{
"files": ["**/*.test.{ts,tsx}"],
"rules": { "no-console": "off" }
},
{
"files": ["scripts/**"],
"rules": { "no-console": "off" }
}
],
// Environment globals
"env": {
"browser": true,
"node": true
},
// Plugin-wide settings
"settings": {
"react": {
"linkComponents": [{ "name": "Link", "linkAttribute": "to" }]
},
"jsx-a11y": {
"components": { "Link": "a", "Button": "button" }
}
},
// Type-aware linting (requires tsconfig)
"options": {
"typeAware": true
}
}
ルールの重大度レベル
"off"/"allow"— ルールを無効にします"warn"— 報告しますが、ビルドは失敗させません"error"/"deny"— 報告し、ゼロ以外の終了コードで終了します
一意なルール名では、プラグインの接頭辞を省略できます。"no-console" は "eslint/no-console" と同じです。
カテゴリー
カテゴリーでは、目的別にルールをグループ化します。推奨される初期設定は次のとおりです。
correctness: "error"— 常に有効です。実際のバグを検出します。suspicious: "warn"— 有用な検出が多い一方、ときどきノイズが発生します。- それ以外は、チームの準備に合わせて段階的に有効にします。
使用可能なプラグイン
デフォルトで有効: typescript、unicorn、oxc
オプトイン(CLI フラグまたは設定):
| プラグイン | CLI フラグ | 目的 |
|---|---|---|
| react | --react-plugin | React 固有のルール |
| jsx-a11y | --jsx-a11y-plugin | JSX のアクセシビリティルール |
| nextjs | --nextjs-plugin | Next.js のベストプラクティス |
| import | --import-plugin | インポート/エクスポートの検証 |
| jest | --jest-plugin | Jest のテストルール |
| vitest | --vitest-plugin | Vitest のテストルール |
| jsdoc | --jsdoc-plugin | JSDoc のドキュメントルール |
| node | --node-plugin | Node.js 固有のルール |
| promise | --promise-plugin | Promise のベストプラクティス |
| react-perf | --react-perf-plugin | React のパフォーマンスルール |
| vue | --vue-plugin | Vue.js のルール |
デフォルトのプラグインを無効にするには、--disable-typescript-plugin、--disable-unicorn-plugin、--disable-oxc-plugin を使用します。
共有設定の拡張
{
"extends": ["./configs/base.json", "./configs/frontend.json"]
}
後に記述された項目が、先に記述された項目を上書きします。パスは、その設定を宣言しているファイルを基準に解決されます。
モノレポのサポート
Oxlint はネストされた設定をサポートしています。各ディレクトリに .oxlintrc.json を配置し、親の設定を上書きできます。不要な場合は --disable-nested-config で無効にします。
CLI クイックリファレンス
| フラグ | 説明 |
|---|---|
-c, --config=PATH | 特定の設定ファイルを使用します |
--tsconfig=PATH | パスエイリアス用の TypeScript 設定 |
--fix | 安全な問題を自動修正します |
--fix-suggestions | 提案された修正も適用します |
-A, --allow=RULE | ルールを抑制します(例:-A no-console) |
-W, --warn=RULE | ルールを警告として扱います |
-D, --deny=RULE | ルールをエラーとして扱います |
--quiet | 警告を抑制し、エラーのみ表示します |
--deny-warnings | 警告をエラーとして扱います(終了コードはゼロ以外) |
--max-warnings=N | 警告が N 個を超えると失敗します |
-f, --format=FMT | 出力形式:default、json、github、unix など |
--ignore-pattern=PAT | パターンに一致するファイルを除外します |
--type-aware | 型情報を使用するルールを有効にします(tsconfig が必要) |
--print-config | 解決済みの設定を表示します(デバッグに便利です) |
--rules | 利用可能なすべてのルールを一覧表示します |
カテゴリも -A/-W/-D で使用できます:
npx oxlint -D correctness -W suspicious -A pedantic
ルールをインラインで抑制する
// oxlint-ignore no-console -- needed for debug logging
console.log(debugInfo);
// oxlint-ignore-next-line no-unused-vars
const _placeholder = computeValue();
eslint-disable ではなく oxlint-ignore を使用してください。oxlint はどちらも認識しますが、ネイティブ構文を推奨します。
ESLint からの移行
プロジェクトを ESLint から oxlint に移行する場合:
-
併用する方法 — 両方のリンターを実行し、
eslint-plugin-oxlintを使って oxlint がすでに対応しているルールを無効にします:npm install -D eslint-plugin-oxlintESLint 設定の最後のプラグインとして追加します。
-
完全に置き換える方法 —
@oxlint/migrateを使って ESLint 設定を変換します:npx @oxlint/migrate既存の ESLint 設定から
.oxlintrc.jsonが生成されます。
対応ファイル形式
.js、.mjs、.cjs、.ts、.mts、.cts、.jsx、.tsx、.vue、.svelte、.astro
.vue、.svelte、.astro ファイルでは、oxlint は <script> ブロックのみを lint します。