你有没有过这样的经历?早上打开电脑,准备改一个老项目的 bug,结果发现 Node.js 版本不对,npm 一堆报错。装了个新版本,结果另一个项目又跑不起来了。来回折腾半小时,正事还没开始。
为什么开发环境会乱成这样?
搞开发的人常常同时维护多个项目。有的用 Python 2.7,有的必须 3.8+;前端项目可能这个要 Node.js 14,那个得用 18。系统全局装一个版本,根本玩不转。
就像你家厨房,不能因为要做川菜就永远只备辣椒,不做粤菜了。工具得能切换,环境得能隔离。
用工具管版本,别靠脑子记
Python 项目多?上 pyenv。它能让你在不同项目里用不同版本的 Python,切换只要一条命令。
pyenv install 3.8.12
pyenv install 2.7.18
cd ~/project-old && pyenv local 2.7.18
cd ~/project-new && pyenv local 3.8.12
Node.js 环境头疼?nvm 是个好帮手。装好之后,每个项目目录下放个 .nvmrc 文件写明要用的版本,进目录执行 nvm use 就自动切换。
echo "16.14.0" > .nvmrc
nvm use
容器不是大炮打蚊子
有些人一听“环境隔离”就想到 Docker。其实真不一定复杂。小项目用版本管理工具就够了。但如果你的项目依赖数据库、缓存、特定系统库,那容器确实省心。
写个 docker-compose.yml,把服务全定义好。同事拉代码,一键启动,谁也不用问“你 Redis 装哪儿了?”
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: redis
虚拟环境是基本修养
Python 不用 virtualenv 或 venv?等于在公共厨房里赤手炒菜。每个项目独立依赖,互不污染。
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
前端也一样,package.json 锁好版本,node_modules 别共享。谁用自己的谁。
配置文件别硬编码
数据库密码写在代码里?千万别。用 .env 文件管理配置,加到 .gitignore,每人本地一套。
DB_HOST=localhost
DB_USER=dev
DEBUG=true
代码里读取环境变量,上线时换配置,不用改一行代码。
日常建议:像整理书桌一样管环境
每次开新项目,花十分钟设好版本和虚拟环境。就像收拾书桌,笔归笔、本归本。看着清爽,干活也快。等出问题再翻,那可就乱成一锅粥了。