40
Re:Nuxt 100 天練習曲
Day 40

專案的搬家清單 (.gitignore)

Day 40·Git Ignore·Version Control

今天我們要認識的 .gitignore,就像是您在打包搬家時,列出的一張「不必打包清單」。

1. 為什麼需要忽略清單?

當您用 Git (版本控制系統) 來管理專案時,Git 就像一個勤勞的搬家工人,會想把您資料夾裡的所有東西都打包(commit)並記錄下來。

但有些東西是不需要、也不應該被打包的:

🔐

私人物品 (Secrets)

例如我們昨天學的 .env 檔案。您不會希望搬家公司把您的密碼本也一起打包吧!

📦

可以重新購買的東西 (Dependencies)

例如 node_modules/ 資料夾。它體積龐大又佔空間,搬到新家後,拿著購物清單 (package.json) 再用 npm install 重新買一份就好。

🗑️

過程中產生的暫存檔 (Build Outputs)

例如 .nuxt.output 資料夾。這些是 Nuxt 在建置過程中產生的檔案,就像打包時用的廢紙箱,不需要保留。

.gitignore 就是這張清單,用來告訴 Git:「嘿,這些檔案你不用管,當作沒看到就好。」

2. Nuxt 預設的 `.gitignore`

幸運的是,當您建立 Nuxt 專案時,它已經為我們準備好了一份非常完善的 .gitignore 清單。我們來看看裡面最重要的幾項:

.gitignore
# Nuxt 在開發/建置時產生的暫存檔
.output
.data
.nuxt
.nitro
.cache
dist

# 專案的外部依賴 (可以透過 npm install 重建)
node_modules

# 執行時產生的 log 檔
logs
*.log

# 作業系統的暫存檔 (例如 macOS 的 .DS_Store)
.DS_Store

# 本地的環境變數檔 (包含機密資訊)
.env
.env.*
!.env.example
特別說明

!.env.example 前面的驚嘆號 ! 表示「不要忽略這個檔案」,因為 .env.example 是一個用來展示 .env 格式的範例檔,它不包含機密,應該被版本控制。

3. 常見的 `.gitignore` 模式

.gitignore 支援各種模式匹配,讓您可以靈活地定義忽略規則:

基本模式:

filename.txt→ 忽略特定檔案
foldername/→ 忽略整個資料夾
*.log→ 忽略所有 .log 檔案

進階模式:

**/*.tmp→ 忽略任何位置的 .tmp 檔案
!important.log→ 不要忽略這個特定檔案
/root-only.txt→ 只忽略根目錄的檔案

今日總結

今天我們學會了 .gitignore 的用途,它是確保我們 Git 儲存庫保持乾淨、輕量且安全的關鍵檔案。

防止機密資訊(如 .env)意外上傳到 Git。

避免體積龐大的依賴包(如 node_modules)佔用儲存空間。

排除建置過程產生的暫存檔,保持專案結構清爽。

支援靈活的模式匹配,可以精確控制要忽略的檔案。

結語

雖然 Nuxt 已經幫我們做好了大部分的工作,但理解它背後的原理,能幫助您在未來需要忽略其他自訂檔案時,知道該如何處理。