專案的搬家清單 (.gitignore)
今天我們要認識的 .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
清單。我們來看看裡面最重要的幾項:
# 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 已經幫我們做好了大部分的工作,但理解它背後的原理,能幫助您在未來需要忽略其他自訂檔案時,知道該如何處理。