本质是分层管理:代码靠Git,配置靠作用域隔离,运行态靠环境变量注入,工具链靠标准化复现;物理级(专用账户)、会话级(dev_env/prod_env函数)、项目级(.env.*+dotenv)三重隔离确保安全可复现。
在 macos 中实现开发环境与生产环境的同步,本质不是“让两边一模一样”,而是让配置、代码、依赖和运行时行为在各自上下文中准确、安全、可复现地生效。同步的关键是分层管理:代码靠 git,配置靠作用域隔离,运行态靠环境变量注入,工具链靠标准化复现。
所有可版本化的部分必须统一源头,避免手工拷贝或覆盖:
main 或 dev)用于日常提交,含 .env.development、调试脚本、mock 数据等 prod 或打 tag 如 v1.2.0)只合入已测试通过的变更,附带 .env.production 和 vercel.json/nginx.conf 等部署配置 dist/)不进 Git,但可通过 CI/CD 自动构建并上传至对象存储(如 S3、Cloudflare R2),供多台生产服务器拉取 示例:本地改完代码后,执行
git add . && git commit -m "fix: auth timeout" && git push origin main;CI 检测到prod分支更新,自动运行pnpm build并上传dist/到 CDN。
变量不能全局乱设,否则开发时误连生产 DB 是高频事故:
produser),其 ~/.zshrc 只写 export NODE_ENV=production DB_HOST=prod-db.internal;GUI 应用(VS Code、Postman)需以该用户登录后启动,才能继承变量 dev_env / prod_env 函数,新开终端后输入 prod_env 即刻加载生产变量,关窗即失效,适合临时验证 dotenv.config({ path:.env.${process.env.NODE_ENV}}),Python 用 decouple.Config(RepositoryEnv(f'.env.{config("ENV", default="development")}'),确保 npm start 时自动读对文件 避免“在我机器上能跑”问题:
docker run -v $(pwd):/app node:18 sh -c "cd /app && npm install && npm start",代码改保存即容器内生效;生产部署则用 multi-stage 构建镜像,基础镜像、依赖、代码分层固化 ~/.zshrc、~/.p10k.zsh 移入 Git 仓库,新设备 git clone && ln -s ~/.dotfiles/zshrc ~/.zshrc && source ~/.zshrc,保证 pnpm、node、git 别名等完全一致 defaults export com.googlecode.iterm2 ~/dotfiles/iterm2.plist,推送到 Git;新设备执行 defaults import com.googlecode.iterm2 ~/dotfiles/iterm2.plist 即还原配色、快捷键、分屏布局 pg_dump --schema-only 或 mysqldump -d 同步 DDL,用脱敏脚本生成测试数据集 spectral 校验,确保生产文档与代码一致 不复杂但容易忽略。