Dotfiles Management - 跨平台配置管理系統
現代化的 dotfiles 管理解決方案,支援 macOS 和 Linux,提供統一的開發環境管理、自動化部署和智能版本切換。
🚀 快速開始
一鍵安裝
# 1. Clone 專案
git clone https://github.com/kywk/dotfiles.git ~/.files
# 2. 執行初始化
cd ~/.files && ./init.sh
# 3. 安裝開發環境
./bin/setup-devenv.sh
# 4. 重啟 shell
source ~/.zshrc
驗證安裝
# 檢查版本
echo $ZSH_VERSION
zinit version
git --version
# 測試效能
time zsh -i -c exit
# 檢查環境
./bin/health-check.sh
🎆 核心特色
- 🌍 跨平台支援 - 自動檢測 macOS/Linux 並載入對應配置
- 🔧 智能環境管理 - 專案自動切換 Java/Node.js/Go 版本
- ⚡ 效能最佳化 - Zinit Turbo 模式,Shell 啟動速度提升 50%+
- 🛡️ 安全設計 - 敏感資料獨立管理,不進版控
- 📦 模組化架構 - 功能分離,易於維護和擴展
- 🚀 一鍵安裝 - 自動化安裝和配置 70+ 開發工具
- 🔒 防污染設計 - 最小化 .zshrc,避免其他工具污染配置
- 🔄 同步機制 - Dropbox 跨設備配置同步
效能指標
| 指標 | 傳統方式 | Dotfiles 系統 | 改善幅度 |
|---|---|---|---|
| Shell 啟動時間 | ~800ms | ~300ms | 📈 62% |
| 記憶體使用 | ~45MB | ~28MB | 📈 38% |
| 工具安裝時間 | ~2小時 | ~20分鐘 | 📈 83% |
| 環境切換時間 | 手動 | 自動 | ⚡ 即時 |
專案結構
dotfiles/
├── bin/ # 可執行工具腳本
├── config/ # 配置檔案
│ ├── versions.sh # 軟體版本統一管理
│ └── secret.sh # 敏感資料 (不進版控)
├── zsh/ # Shell 配置
│ ├── zinit.zshrc # Zinit 插件管理 (Turbo 模式最佳化)
│ ├── common.zshrc # 通用 zsh 配置
│ └── kywk.zshrc # 基礎 zsh 設定
├── mac/ # macOS 專用配置
│ └── Brewfile # 套件管理 (70+ 開發工具)
└── 核心配置檔案 (gitconfig, gitmessage, kywk.shrc)
📊 同步機制
Dropbox 同步 (推薦)
使用 Awesome Dropbox 同步配置檔案,搭配 Symbolic Link:
# 配置檔案位置
~/Dropbox/config/dotfiles/
# 自動建立 symbolic links
~/.zshrc -> ~/.files/zsh/kywk.zshrc
~/.gitconfig -> ~/.files/gitconfig
~/.tmux.conf -> ~/.files/tmux.conf
~/.vimrc -> ~/.files/vimrc
優點:
- ✅ 跨設備即時同步
- ✅ 版本歷史和復原功能
- ✅ 支援離線存取
- ✅ 無需手動觸發
開源客戶端 Maestral
取代官方 Dropbox Desktop,更輕量級:
# macOS 安裝
brew install maestral
# Linux 安裝
pip install maestral
# 啟動同步
maestral start
maestral status
參考:Maestral
Git 版本控制
# 備份現有配置
./bin/backup-config.sh
# 提交變更
git add .
git commit -m "Update configuration"
git push origin main
# 在其他設備同步
git pull origin main
./bin/sync-config.sh
版本管理
支援的開發環境
| 語言/工具 | 版本管理 | 預設版本 | 自動檢測檔案 |
|---|---|---|---|
| Java | SDKMAN | 21.0.5-zulu | pom.xml, build.gradle |
| Node.js | Volta/NVM | 20 | package.json, .nvmrc |
| Go | 系統安裝 | 1.21.5 | go.mod |
版本配置統一管理
# config/versions.sh
export JAVA_VERSION="21.0.5-zulu"
export NODE_VERSION="20"
export GO_VERSION="1.21.5"
實用工具腳本
系統維護
./bin/setup-devenv.sh # 一鍵安裝開發環境
./bin/health-check.sh # 環境健康檢查
./bin/update.sh # 更新所有工具
./bin/backup.sh # 配置備份
開發輔助
./bin/gen-gitignore.sh # 智能生成 .gitignore
./config/versions.sh # 軟體版本統一管理
Shell 環境
Zinit + Powerlevel10k
- Turbo 模式最佳化 - 啟動速度提升 50%+
- 最小化 .zshrc - 避免其他工具污染配置
- 自動檢測專案 - 根據檔案類型切換版本
參考:Zinit
自訂配置
本機設定
# ~/.config/local.sh
export KYWK_HOME="/custom/path"
export CUSTOM_VAR="value"
敏感資料
# config/secret.sh (不進版控)
export API_KEY="your-key"
export DATABASE_URL="your-db-url"
故障排除
常用命令
# 重載配置
source ~/.zshrc
# 除錯模式
LOG_LEVEL=debug source bin/load-env.sh
# 重新初始化
./bin/backup.sh && ./init.sh
健康檢查
# 檢查環境狀態
./bin/health-check.sh
# 檢查版本管理
which java node go
java -version
node --version
go version
🔗 See Also
相關工具
- Zinit - 高效能 Zsh 插件管理器
- Zsh config - Zsh 配置文件管理
- Mac DevEnv Setup - macOS 開發環境建構
- Mac Apps Setup - macOS 應用程式安裝
- Awesome Dropbox - Dropbox 工具資源
替代方案比較
| 工具 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| chezmoi | 功能完整、模板支援 | 學習曲線高 | 複雜配置管理 |
| GNU Stow | 簡單輕量、穩定 | 功能限制 | 簡單符號連結 |
| yadm | Git 原生、加密支援 | 效能一般 | 安全導向用戶 |
| rcm | 簡單易用 | 停止維護 | 傳統 Unix 環境 |
| Ansible | 強大自動化 | 複雜度高 | 企業環境管理 |
學習資源
官方文件:
- Dotfiles Guide - 官方指南
- Awesome Dotfiles - 精選資源
社群資源:
- r/dotfiles - Reddit 社群
- Dotfiles.org - 配置分享平台
參考實作:
最佳實踐
組織原則:
- 模組化設計 - 按功能分離配置
- 平台獨立 - 使用條件載入
- 版本控制 - 所有變更都進 Git
- 文件化 - 詳細記錄安裝和使用
安全考量:
- 敏感資料獨立管理
- 使用環境變數存放秘密
- 定期備份和測試復原
- 權限控制和存取管理