リンター設定とコミット時実行の手順

package.jsonの設定

コマンドのショートカットを設定

package.jsonのscriptsに各リンターのショートカットを設定する。

{
  "scripts": {
    // HTMLファイルに対してmarkuplintを実行
    "lint:html": "markuplint \"**/*.html\"",
    // Astroファイルに対してmarkuplint、biome、stylelintを実行
    "lint:astro": "markuplint \"**/*.astro\" && biome check --write ./src && stylelint --fix **/*.{astro}",
    // CSSファイルに対してbiomeとstylelintを実行
    "lint:style": "biome check --write ./src && stylelint --fix **/*.{css,scss,sass}",
    // JavaScript/TypeScriptファイルに対してbiomeを実行
    "lint:script": "biome check --write ./src"
  }
}

これでpnpm run "lint:〇〇"で実行できるようになる。

コミット時にリンターが実行されるようにする

Huskyのインストールと設定

Gitのフックを利用して、コミット前に自動的にリンターを実行できるようにする。1

# Huskyを開発依存関係としてインストール
pnpm install -D husky

プロジェクト内でhuskyを使うためのコマンドを実行する。プロジェクト直下に.husky/pre-commitが作成される。

# Huskyの初期化(pre-commitフックファイルを作成)
pnpm exec husky init

lint-stagedのインストールと設定

huskyのみだと全てのファイルが対象になるため、lint-stagedでコミット対象のファイルのみ処理を実行するようにする。

# lint-stagedを開発依存関係としてインストール
pnpm install -D lint-staged

package.jsonにコミット前に実行する設定を記述する。

{
  "lint-staged": {
    // Astroファイルに対する処理
    "*.astro": ["markuplint", "biome check --write", "stylelint --fix"],
    // HTMLファイルに対する処理
    "*.html": ["markuplint"],
    // CSS/SCSS/SASSファイルに対する処理
    "*.{css,scss}": ["biome check --write", "stylelint --fix"],
    // TypeScript/JavaScriptファイルに対する処理
    "*.{ts,tsx,js,jsx}": "biome check --write"
  }
}

.husky/pre-commitに書かれていたpnpm testlint-stagedに変更しておく。

これでコミット前に各リンターが実行されるようになる。

Footnotes

  1. Gitフックとは