跳至主要内容

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

版本管理

支援的開發環境

語言/工具版本管理預設版本自動檢測檔案
JavaSDKMAN21.0.5-zulupom.xml, build.gradle
Node.jsVolta/NVM20package.json, .nvmrc
Go系統安裝1.21.5go.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

相關工具

替代方案比較

工具優點缺點適用場景
chezmoi功能完整、模板支援學習曲線高複雜配置管理
GNU Stow簡單輕量、穩定功能限制簡單符號連結
yadmGit 原生、加密支援效能一般安全導向用戶
rcm簡單易用停止維護傳統 Unix 環境
Ansible強大自動化複雜度高企業環境管理

學習資源

官方文件

社群資源

參考實作

最佳實踐

組織原則

  1. 模組化設計 - 按功能分離配置
  2. 平台獨立 - 使用條件載入
  3. 版本控制 - 所有變更都進 Git
  4. 文件化 - 詳細記錄安裝和使用

安全考量

  • 敏感資料獨立管理
  • 使用環境變數存放秘密
  • 定期備份和測試復原
  • 權限控制和存取管理