はじめに
「セミコロンは付けるか付けないか」「シングルクォートかダブルクォートか」——チームでJavaScriptを書いていると、こうしたスタイルの議論に時間を取られた経験はないでしょうか。ESLintの.eslintrcを1から設計し、ルールを一つずつ調整していく作業は、地味に工数を食います。
Standard(JavaScript Standard Style)は、この議論そのものをなくしてしまうという発想のツールです。設定ファイルを一切書かずに、インストールした瞬間から統一されたコードスタイルのチェックと自動修正が使えます。
Standardとは
Standardは、ESLintをベースにした「設定不要のコードスタイルガイド+リンター+自動整形ツール」です。npmパッケージ名もstandardで、GitHubではstandard/standardとして公開されています。プロジェクトにnpm install standardするだけで、ルールを何も書かずにコードチェックが始まる点が最大の特徴です。
主な特徴
- ゼロコンフィグ -
.eslintrcや.prettierrcのような設定ファイルが不要で、インストール後すぐに使えます - 自動修正機能 -
standard --fixを実行するだけで、インデント・クォート・セミコロンなどのスタイル崩れを一括で直せます - 議論をなくすルールセット - セミコロンなし、シングルクォート、2スペースインデントといったルールがあらかじめ決まっており、チームでルールを話し合う必要がありません
- エコシステムの広さ - TypeScript向けの
ts-standard、React向けのstandard-jsxなど派生パッケージが用意されています
インストール
プロジェクトの開発依存として入れるのが一般的です。
# npm
npm install standard --save-dev
# yarn
yarn add standard --dev
# pnpm
pnpm add -D standard
# グローバルに入れてCLIとして使う場合
npm install standard --global
基本的な使い方
インストールしたら、package.jsonのscriptsにコマンドを追加しておくと便利です。
{
"scripts": {
"lint": "standard",
"lint:fix": "standard --fix"
}
}
npm run lintを実行すると、カレントディレクトリ以下のJavaScriptファイルがStandardのルールでチェックされ、違反があれば行番号付きで報告されます。ルール違反の多くはstandard --fixで自動的に修正できるため、手作業でスタイルを直す手間がほとんどかかりません。
npx standard
npx standard --fix
インストール不要で試したい場合はnpx standardだけでも動作します。
実践的なユースケース
Standardは「そのまま使う」だけでなく、プロジェクトの事情に合わせて柔軟に組み込めます。ここでは代表的な3つのパターンを紹介します。
package.jsonでの部分的なカスタマイズ
Standardは設定ファイルを持ちませんが、package.json内のstandardフィールドで、無視するファイルやグローバル変数を指定できます。ルールそのものを変えるのではなく、対象範囲を調整する用途で使います。
{
"standard": {
"env": ["mocha"],
"globals": ["myCustomGlobal"],
"ignore": [
"**/dist/**",
"**/*.test.js"
]
}
}
テストフレームワークが使うグローバル変数(describeやitなど)をenvで許可したり、ビルド成果物のディレクトリをignoreでチェック対象から外したりできます。
huskyとlint-stagedによるコミット前チェック
コードレビューの前にスタイル崩れを機械的に潰しておくと、レビューが本質的な議論に集中できます。huskyとlint-stagedを組み合わせると、コミットするたびにStandardの自動修正が走るようになります。
{
"lint-staged": {
"*.js": "standard --fix"
}
}
npx husky init
echo "npx lint-staged" > .husky/pre-commit
ステージされたJavaScriptファイルだけが対象になるため、大きなリポジトリでも実行が重くなりにくいのが利点です。
GitHub ActionsでのCIチェック
自動修正はローカルに任せつつ、CI側では「修正が必要なコードが混入していないか」を検査するだけにするのが定石です。standardコマンドは違反があると非ゼロの終了コードを返すため、そのままCIのジョブに組み込めます。
name: lint
on: [push, pull_request]
jobs:
standard:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx standard
TypeScriptプロジェクトでのts-standard
TypeScriptを使っている場合は、Standardの思想をそのまま引き継いだts-standardが利用できます。使い方はStandardとほぼ同じで、設定不要のまま.tsファイルをチェックできます。
npm install ts-standard --save-dev
npx ts-standard --fix
tsconfig.jsonが存在するプロジェクトであれば、追加設定なしにそのまま型情報を使ったチェックが動きます。
まとめ
Standardは、コードスタイルのルールを「決める」作業そのものを不要にしてくれるツールです。ESLintの設定にかける時間を減らし、チームの議論をロジックやアーキテクチャに集中させたいときに向いています。package.json側のわずかな調整だけで、既存のプロジェクトにも無理なく導入できるので、まずはnpx standardで今のコードベースを診断してみるところから始めてみてください。
