# 指定下載來源
registry=https://registry.npmjs.org/

# 自動儲存精確版本號 (不帶 ^ 或 ~)，避免版本漂移
# save-exact=true

# 安全防禦：禁止安裝發布未滿 7 天的套件 (預防供應鏈攻擊)
# npm v11.10+
min-release-age=7
# pnpm
minimum-release-age=10080

# 嚴格版本檢查：若 Node 或 pnpm 版本不符 package.json 定義則報錯
# engine-strict=true

# 讓 pnpm 自動安裝缺失的 peer dependencies，減少手動維護的負擔
auto-install-peers=true

# 效能優化：讓 pnpm 盡可能解析出唯一的依賴版本
resolution-mode=highest

# ==========================================
# 團隊協作規範
# ==========================================
# 當 Lockfile 有變動但未對應安裝時，在 CI 環境直接報錯
# frozen-lockfile=true

# ==========================================
# Monorepo 結構與依賴管理
# ==========================================
# 強制使用 workspace: 協議，確保子專案互相引用時是指向原始碼而非 npm 上的版本
# save-workspace-protocol=true

# 禁止子專案之間出現循環依賴，避免構建時陷入死循環
# disallow-workspace-cycles=true

# 從根目錄解析 peerDependencies，確保全專案的 peer 依賴版本統一，減少重複打包
# resolve-peers-from-workspace-root=true

# 執行遞迴指令 (pnpm -r) 時包含根目錄 (適用於根目錄有腳本或工具時)
# include-workspace-root=true
