最小限の Node.js + macOS .gitignore
# Node.js node_modules/ npm-debug.log* dist/ .env .env.local # macOS .DS_Store ._*
macOS の同僚と共有するあらゆる Node プロジェクトの最小限。小さなサイドプロジェクトでもこれらのルールを持つべき — .DS_Store と node_modules/ がなければ無意味な競合と戦うことになる。
言語・フレームワーク・IDE・OS から、きれいな .gitignore を作成。
最終更新
# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
.pnpm-store/
.npm
.yarn-integrity
# Coverage
coverage/
*.lcov
.nyc_output
# Build output
dist/
build/
# Environment
.env
.env.local
.env.*.local
# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
すべての Git リポジトリには .gitignore が必要です。Git が**追跡しない**べきパスのプレーンテキストリスト — ビルド成果物、依存フォルダ、IDE 設定、.DS_Store のような OS ゴミ。これが無いと最初のコミットで node_modules/、.env、target/ を巻き込み、後始末は最初から正しく設定するよりもはるかに面倒です。
エコシステムごとに無視すべきものが違い、ほとんどのプロジェクトは複数にまたがります。VS Code を使う Mac 上の典型的な Node + TypeScript アプリでも、すでに 4 種類の無視リストの和集合が必要。記憶頼りで書くと coverage/ を忘れ、.env を漏らし、JetBrains 派の同僚由来の .idea/ をうっかり混入させます。
そこで本ジェネレーターは、標準的な github/gitignore プロジェクトから厳選したテンプレート(GitHub の公式自動提案と同じソース)を束ね、スタックして使えるようにしました。チェックを入れると重複排除済みの単一 .gitignore を出力し、そのまま repo に貼り付け可能。アカウント不要、アップロード不要、すべてブラウザで完結。
.gitignore のパターンは glob 構文:*.log はすべてのログを無視、build/ はフォルダを無視、!important.log は glob にマッチしても特定ファイルを再包含。.gitignore の位置を基準に適用 — src/ 内の .gitignore は src/ 配下のファイルのみに影響。node_modules/ をコミット後に .gitignore に追加しても、git rm -r --cached node_modules が別途必要。プロジェクトが一般的な組み合わせ — Next.js、Django、Rails — に合致するなら、プリセットをクリックして関連する全チェックを一括で。あとは個別に追加・削除。
各言語には無視すべき成果物があります:Node には node_modules/、Python には __pycache__/ と仮想環境、Java には target/ と .class。実際にコンパイルする言語を選択。
言語ルールに加え、フレームワークは独自のビルドディレクトリを足します:Next.js は .next/ と .vercel、Django は staticfiles/ と db.sqlite3、Rails は tmp/ と /storage/*。使うフレームワークにチェック。
**チーム**が使うエディタのテンプレートを追加(自分だけでなく)— 誰かが JetBrains や Vim を使うなら入れる。次にチームの OS:macOS は .DS_Store、Windows は Thumbs.db を残します。どちらもうっかりコミットしがち。
右パネルが結合・重複排除された出力を表示。**コピー**でリポジトリルートの .gitignore にそのまま貼り付け、または**ダウンロード**でファイルを直接保存。
もっとも書くパターン。完全なリファレンス:git-scm.com/docs/gitignore。
| パターン | 意味 | 例 |
|---|---|---|
node_modules | ツリーの任意の場所で、この正確な名前のファイルまたはフォルダを無視 | /node_modules と src/node_modules の両方を捕捉 |
node_modules/ | 末尾スラッシュ — **フォルダ** のみマッチ、同名ファイルは対象外 | 誤って node_modules と名付けられたファイルは捕捉しない |
/build | 先頭スラッシュ — .gitignore のディレクトリのみに固定 | /build には一致、src/build には不一致 |
*.log | Glob — .log で終わる任意のファイルにマッチ | error.log、debug.log、logs/foo.log を捕捉 |
!important.log | 否定 — 先行ルールに捕捉された特定のファイルを再包含 | *.log と組み合わせて 1 つのログを追跡し続ける |
docs/**/draft | ダブルアスタリスク — docs/ の任意のサブフォルダ内の draft をマッチ | docs/v1/draft と docs/2025/q1/draft を捕捉 |
# comment | コメント — # で始まる行は Git に無視される | # Node.js のような見出しでルールをグループ化 |
# Node.js node_modules/ npm-debug.log* dist/ .env .env.local # macOS .DS_Store ._*
macOS の同僚と共有するあらゆる Node プロジェクトの最小限。小さなサイドプロジェクトでもこれらのルールを持つべき — .DS_Store と node_modules/ がなければ無意味な競合と戦うことになる。
# Python __pycache__/ *.py[cod] .venv .pytest_cache/ # Django *.log local_settings.py db.sqlite3 media/ staticfiles/ # JetBrains .idea/ *.iml
PyCharm で開発される典型的な Django バックエンド。ローカルの db.sqlite3 が無視されている点に注目 — prod では使わず、コミットすると dev データが漏れ、同僚のフレッシュクローンが壊れる。
*.log !keep-me.log
1 行目はすべての .log を無視。!keep-me.log ルールがその特定ファイルを再包含する。否定は先行ルールが実際に無視したファイルにのみ機能 — 無視されたフォルダ内のファイルを再包含することはできない。
.gitignore を追加してコミット済みファイルが消えると期待する。消えない — 追跡解除には git rm -r --cached <パス> が必要。.env を一度コミットする。1 回のコミットでも履歴にずっとシークレットが残る。最初のコミットの**前**に .env* を .gitignore に入れ、漏れたシークレットはローテーションする。.DS_Store ルールがなければ、それらのファイルがすべての PR 差分に現れる。.gitignore はバージョン管理されチームと共有することを意図している。何を追跡し何を追跡しないかの *契約*。例外は個人の好み(例:使うエディタ)— それはグローバルな ~/.gitignore_global に。.gitignore に追加し、次に git rm --cached <パス>(または git rm -r --cached <フォルダ>)でディスク上のファイルを消さずにインデックスから削除。両方の変更を一緒にコミットしてチームに更新を見せる。.gitignore を探し、そのサブツリーにルールを適用。フロントとバックで無視ルールが大きく異なるモノレポで便利 — 共有の OS/エディタノイズはルートに、言語ルールは各パッケージのディレクトリに。.gitignore はコミットされチームと共有される。.git/info/exclude はローカルクローンにしか存在せず、プッシュしたくない個人的な除外用。すべてのリポにまたがる除外にはグローバルな ~/.gitignore_global を使う。