# Prettier の使い方と一括フォーマット
コードのフォーマットを統一することは、チーム開発において非常に重要です。Prettier は、JavaScript、TypeScript、JSON、CSS、HTML など多くの言語に対応したコードフォーマッターです。この記事では、Prettier の基本的な使い方と、プロジェクト全体を一括フォーマットする方法を解説します。
# Prettier とは
Prettier は、コードのスタイルを自動的に統一してくれるフォーマッターです。インデント、改行、引用符、セミコロンなどのスタイルを自動的に整形してくれます。
# 主な特徴
- 自動フォーマット:コードを保存時に自動的に整形
- 設定可能:プロジェクトごとに設定をカスタマイズ可能
- 多言語対応:JavaScript、TypeScript、JSON、CSS、HTML、Markdown など
- 意見が分かれる設定を排除:チーム内での議論を減らせる
# インストール方法
# npm でインストール
npm install --save-dev --save-exact prettier
# yarn でインストール
yarn add --dev --exact prettier
--save-exact オプションを付けることで、特定のバージョンを固定できます。チーム開発では、全員が同じバージョンを使うことが推奨されます。
# 設定ファイルの作成
プロジェクトのルートディレクトリに .prettierrc ファイルを作成して、フォーマットの設定を行います。
# .prettierrc の例
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 80,
"arrowParens": "always"
}
# 主な設定オプション
| オプション | デフォルト | 説明 |
|---|---|---|
semi | true | セミコロンを付けるかどうか |
singleQuote | false | シングルクォートを使うかどうか |
tabWidth | 2 | インデントのスペース数 |
trailingComma | "none" | 末尾のカンマを付けるかどうか |
printWidth | 80 | 1 行の最大文字数 |
arrowParens | "always" | アロー関数の引数に括弧を付けるかどうか |
bracketSpacing | true | オブジェクトリテラルの括弧内にスペースを入れる |
endOfLine | "lf" | 改行コード(lf, crlf, cr, auto) |
# .prettierignore ファイル
特定のファイルやディレクトリをフォーマット対象から除外する場合は、.prettierignore ファイルを作成します。
# ビルド成果物
dist/
build/
*.min.js
# 依存関係
node_modules/
# ログファイル
*.log
# 設定ファイル
package-lock.json
yarn.lock
# VSCode 拡張機能の使い方
VSCode で Prettier を使うには、拡張機能をインストールします。
# 拡張機能のインストール
- VSCode を開く
- 拡張機能タブ(Cmd+Shift+X / Ctrl+Shift+X)を開く
- "Prettier - Code formatter" を検索
- インストール
# 保存時に自動フォーマット
VSCode の設定(settings.json)に以下を追加すると、ファイル保存時に自動的にフォーマットされます。
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
# 手動でフォーマット
- Mac:
Shift + Option + F - Windows/Linux:
Shift + Alt + F
または、コマンドパレット(Cmd+Shift+P / Ctrl+Shift+P)から "Format Document" を選択します。
# 一括フォーマットの方法
# コマンドラインで一括フォーマット
プロジェクト全体のファイルを一括フォーマットするには、以下のコマンドを実行します。
npx prettier --write .
特定のディレクトリやファイルのみをフォーマットする場合:
# 特定のディレクトリ
npx prettier --write src/
# 特定のファイル
npx prettier --write src/index.js
# 複数のファイルパターン
npx prettier --write "src/**/*.{js,ts,json}"
# package.json にスクリプトを追加
package.json にスクリプトを追加しておくと、簡単に実行できます。
{
"scripts": {
"format": "prettier --write .",
"format:check": "prettier --check ."
}
}
実行方法:
# フォーマット実行
npm run format
# フォーマットが必要かチェック(CI などで使用)
npm run format:check
# VSCode で一括フォーマット
- コマンドパレット(Cmd+Shift+P / Ctrl+Shift+P)を開く
- "Format Document" を検索して実行
- または、エクスプローラーでフォルダを右クリック → "Format Document"
複数ファイルを一括フォーマットする場合:
- エクスプローラーでフォルダを選択
- 右クリック → "Format Document" を選択
- すべてのファイルをフォーマットするか確認
# 特定のファイルタイプのみフォーマット
# JavaScript と TypeScript のみ
npx prettier --write "**/*.{js,ts}"
# JSON ファイルのみ
npx prettier --write "**/*.json"
# Markdown ファイルのみ
npx prettier --write "**/*.md"
# フォーマット前後の確認
フォーマットを実行する前に、どのファイルが変更されるか確認したい場合は、--check オプションを使用します。
npx prettier --check .
このコマンドは、フォーマットが必要なファイルをリストアップしますが、実際にはフォーマットしません。
# チーム開発での活用
# Git フックとの連携
husky と lint-staged を使って、コミット前に自動フォーマットを実行できます。
npm install --save-dev husky lint-staged
package.json に設定を追加:
{
"lint-staged": {
"*.{js,ts,json,md}": [
"prettier --write"
]
}
}
# CI/CD でのチェック
GitHub Actions などの CI/CD で、フォーマットが正しく行われているかチェックできます。
- name: Check formatting
run: npm run format:check
# その他のフォーマットツール
# ESLint との併用
Prettier はコードスタイルを整形しますが、ESLint はコードの品質をチェックします。両方を併用する場合は、eslint-config-prettier を使って競合を回避します。
npm install --save-dev eslint-config-prettier
# 言語別のフォーマッター
- PHP: phpfmt, PHP CS Fixer
- Python: Black, autopep8
- Go: gofmt
- Rust: rustfmt
# まとめ
Prettier を使うことで、コードのスタイルを自動的に統一でき、チーム開発の効率が向上します。保存時の自動フォーマットと、一括フォーマットの両方を活用することで、コードの品質と一貫性を保つことができます。
# 推奨されるワークフロー
- プロジェクト初期に
.prettierrcを設定 - VSCode で保存時に自動フォーマットを有効化
- コミット前に
npm run formatで一括フォーマット - CI/CD でフォーマットチェックを実行
これにより、コードのスタイルに関する議論を減らし、開発に集中できる環境を構築できます。