我的 Dotfiles 项目:现代化开发环境自动化配置
2025-10-15

为什么做这个项目

每次换电脑或者重装系统,最头疼的就是重新配置开发环境。装 Homebrew、配 Git、设置 SSH、调教编辑器...一套下来至少得折腾半天,还经常漏掉什么。

后来实在受不了了,就搞了个 dotfiles 项目,现在新机器上一条命令就能搞定所有配置。

git clone https://github.com/fullstackjam/dotfiles.git
cd dotfiles
make setup

大概 10-15 分钟就完事了。

项目结构

整个项目按功能分成了几个模块:

dotfiles/
├── Makefile              # 主要入口
├── Brewfile              # Homebrew 包列表
├── scripts/              # 安装脚本
├── git/                  # Git 配置
├── nvm/                  # Node.js 版本管理
├── ssh/.ssh/             # SSH 配置
├── nvim/.config/nvim/    # Neovim 配置
├── zsh/                  # Zsh 配置
├── .gitignore            
└── README.md             

这样设计的好处是:

可用命令

支持一键安装,也支持单独安装某个组件:

make setup       # 完整安装
make install     # 只装软件
make deploy      # 只部署配置

# 单独安装
make homebrew    # 装 Homebrew
make brewfile    # 装软件包
make stow-git    # 部署 Git 配置
make stow-nvm    # 部署 NVM 配置
make stow-ssh    # 部署 SSH 配置
make stow-nvim   # 部署 Neovim 配置

make help        # 看所有命令

技术实现

用 Stow 管理配置文件

配置文件用 GNU Stow 来管理符号链接,这样 home 目录不会乱,而且容易同步到其他机器。

# 批量创建符号链接
for dir in */; do
    if [ -d "$dir" ] && [ "$dir" != ".ssh/" ] && [ "$dir" != "scripts/" ]; then
        stow --target="$HOME" --restow "$dir"
    fi
done

Makefile 依赖管理

用 Makefile 来管理安装顺序,确保先装 Homebrew 再装软件包:

setup: install deploy

install: homebrew brewfile

homebrew:
    @scripts/01-homebrew.sh

brewfile: homebrew
    @scripts/02-brewfile.sh

deploy: stow-git stow-nvm stow-ssh stow-nvim stow-zsh

stow-git:
    @stow --target="$HOME" --restow git

stow-nvm:
    @stow --target="$HOME" --restow nvm

stow-ssh:
    @stow --target="$HOME" --restow ssh

stow-nvim:
    @stow --target="$HOME" --restow nvim

stow-zsh:
    @stow --target="$HOME" --restow zsh

包含的工具

主要包含这些工具和配置:

配置文件方面:

安装脚本

脚本里加了一些错误处理和状态提示,出错了能看出来:

# 彩色输出
print_status() {
    echo -e "${GREEN}=== $1 ===${NC}"
}

print_warning() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

print_error() {
    echo -e "${RED}❌ $1${NC}"
}

还提供了状态检查命令:

make status
# 输出:
# === Dotfiles Setup Status ===
# Homebrew: ✅ Installed
# git-crypt: ✅ Installed
# SSH setup: ✅ Linked
# Git config: ✅ Linked
# Zsh config: ✅ Linked

如果出问题了,可以用 make clean 清理掉所有符号链接。

自定义配置

想改配置的话:

总结

这个项目把半天的手动配置工作压缩成一条命令,换机器的时候环境能保持一致。所有配置都在 git 里,随时可以回滚。

如果你也经常折腾开发环境,建议搞个自己的 dotfiles 项目。

项目地址:https://github.com/fullstackjam/dotfiles