Multi-language development environment isolation toolkit for developers using OpenCode CLI on macOS
🎯 Isolate | 📦 Reproduce | 🔄 Switch | ⚡ Accelerate
IMPORTANT
For AI Assistants (Claude / OpenCode)
如果你是 AI 助手,请执行以下操作:
读取 AI_SETUP_GUIDE.md,扫描用户 workspace 下的现有项目,为每个项目生成精确的配置模板,并提供交互式向导帮助用户初始化环境。
Read AI_SETUP_GUIDE.md, scan the user's workspace projects, generate precise configuration templates for each project, and guide the user through interactive environment initialization.
💡 一键环境配置现已支持 Claude & OpenCode!
AI 助手可以直接阅读 AI_SETUP_GUIDE.md 并自动为你的项目配置合适的开发环境。
Multiple Env 为开发者提供一个完整的多语言开发环境隔离解决方案。无论是个人开发者还是团队协作,都能实现:
✅ 环境隔离 — 每个项目独立的技术栈和依赖
✅ 一键复现 — 新成员秒级搭建相同环境
✅ 快速切换 — 在不同项目间无缝切换,告别版本冲突
✅ AI 友好 — 专为 OpenCode CLI 优化,支持 AI 自动配置
| 层级 | 工具 | 适用场景 |
|---|---|---|
| Layer 1 | asdf + direnv | 轻量级隔离(Node.js, Python, Go, Java Web 项目) |
| Layer 2 | Dev Containers | 全隔离(需要数据库、缓存等服务) |
| Layer 3 | Native | 移动端(iOS, React Native, Flutter) |
┌─────────────────────────────────────────────────────────────────────┐
│ Multiple Env 架构 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🖥️ Native (Layer 3) │ │
│ │ iOS / React Native / Flutter │ │
│ │ Xcode / Android Studio │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ⬆️ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🐳 Dev Containers (Layer 2) │ │
│ │ Docker + VS Code + 数据库/缓存/消息队列 │ │
│ │ PostgreSQL, Redis, MongoDB, RabbitMQ, Kafka... │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ⬆️ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ ⚡ asdf + direnv (Layer 1) │ │
│ │ Node.js, Python, Go, Java, Ruby, Rust, Elixir... │ │
│ │ 自动版本切换 · 环境变量注入 · 项目级隔离 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ⬆️ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🗂️ Project Workspace │ │
│ │ Web Apps / APIs / CLIs / Libraries / Mobile │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Layer 1 (asdf + direnv) ────────► 80% 的项目使用
├── 自动检测 .tool-versions
├── 自动注入 .envrc 环境变量
└── 毫秒级切换,零开销
Layer 2 (Dev Containers) ───────► 需要完整服务栈
├── Docker 全隔离
├── 预装数据库、缓存、工具
└── 团队环境 100% 一致
Layer 3 (Native) ───────────────► 移动端开发
├── iOS: Xcode + Swift
├── Android: Android Studio
└── 跨平台: Flutter, React Native
git clone https://cnb.cool/asahiluna/multiple-env.git && cd multiple-env
bash scripts/install-environment-tools.sh
这会安装:
asdf — 多语言版本管理器direnv — 自动环境变量加载已有项目配置:
bash scripts/setup-projects.sh
创建新项目:
bash scripts/init-new-project.sh
multiple-env/
├── 📜 README.md # 本文件
├── 🤖 AI_SETUP_GUIDE.md # AI 助手配置指南
│
├── 🔧 scripts/ # 自动化脚本
│ ├── install-environment-tools.sh # 安装 asdf, direnv, Docker
│ ├── setup-projects.sh # 批量配置现有项目
│ ├── init-new-project.sh # 交互式新项目初始化
│ └── generate-config.sh # 配置模板生成器
│
├── 📋 templates/ # 配置模板库
│ ├── existing-projects/ # 已适配项目模板
│ │ ├── node-web/ # Node.js Web 项目
│ │ ├── python-api/ # Python API 项目
│ │ ├── go-cli/ # Go CLI 项目
│ │ └── java-spring/ # Spring Boot 项目
│ │
│ └── future-projects/ # 标准技术栈模板
│ ├── vue-spa/ # Vue.js 单页应用
│ ├── react-spa/ # React 单页应用
│ ├── nextjs-fullstack/ # Next.js 全栈
│ ├── fastapi/ # FastAPI 项目
│ ├── flask/ # Flask 项目
│ ├── django/ # Django 项目
│ ├── spring-boot/ # Spring Boot
│ ├── flutter-mobile/ # Flutter 移动应用
│ └── react-native/ # React Native 应用
│
└── 📚 docs/ # 文档
├── asdf-guide.md # asdf 使用指南
├── direnv-guide.md # direnv 配置指南
├── devcontainer-guide.md # Dev Container 指南
└── troubleshooting.md # 常见问题
| 语言/框架 | 版本 | Template | DevContainer | 推荐层级 |
|---|---|---|---|---|
| Node.js | 18, 20, 22 LTS | ✅ | ✅ | Layer 1 |
| Python | 3.10, 3.11, 3.12 | ✅ | ✅ | Layer 1/2 |
| Go | 1.21, 1.22 | ✅ | ✅ | Layer 1 |
| Java | 17, 21 LTS | ✅ | ✅ | Layer 1/2 |
| Vue.js | 3.x | ✅ | ✅ | Layer 1 |
| React | 18.x | ✅ | ✅ | Layer 1 |
| Next.js | 14.x, 15.x | ✅ | ✅ | Layer 1/2 |
| FastAPI | 0.110+ | ✅ | ✅ | Layer 2 |
| Flask | 3.x | ✅ | ✅ | Layer 1/2 |
| Django | 5.x | ✅ | ✅ | Layer 2 |
| Spring Boot | 3.x | ✅ | ✅ | Layer 2 |
| Flutter | 3.22+ | ✅ | ❌ | Layer 3 |
| React Native | 0.74+ | ✅ | ❌ | Layer 3 |
Ruby → 通过 asdf-ruby
Rust → 通过 asdf-rust
Elixir → 通过 asdf-elixir
Kotlin → 通过 asdf-java
运行交互式向导:
bash scripts/init-new-project.sh
向导会询问:
在 templates/existing-projects/ 目录中找到匹配的技术栈,将配置复制到你的项目目录:
# 示例:配置现有 Node.js 项目
cd your-node-project
cp -r /path/to/multiple-env/templates/existing-projects/node-web/.devcontainer/ .
cp /path/to/multiple-env/templates/existing-projects/node-web/.tool-versions .
cp /path/to/multiple-env/templates/existing-projects/node-web/.envrc.example .envrc
# 编辑配置
echo "nodejs 20.11.0" > .tool-versions
echo "export NODE_ENV=development" >> .envrc
# 允许 direnv
direnv allow
从 templates/future-projects/ 复制标准模板:
# 示例:创建新的 FastAPI 项目
cd your-fastapi-project
# 复制 Dev Container 配置
cp -r /path/to/multiple-env/templates/future-projects/fastapi/.devcontainer/ .
# 复制工具版本文件
cp /path/to/multiple-env/templates/future-projects/fastapi/.tool-versions .
# 复制环境变量模板
cp /path/to/multiple-env/templates/future-projects/fastapi/.envrc.example .envrc
# 初始化并允许环境
direnv allow
# 进入项目目录 — direnv 自动加载环境
$ cd ~/projects/my-api
direnv: loading ~/projects/my-api/.envrc
direnv: export +PYTHON_VERSION +VIRTUAL_ENV ~PATH
# 检查当前版本
$ python --version
Python 3.11.7
# 启动 OpenCode
eval "$($HOME/.local/bin/opencode init zsh)"
$ opencode
🤖 OpenCode CLI ready. Type 'help' for commands.
# 开发、测试、提交...
[opencode] > run tests
✅ All tests passed!
# 切换到另一个项目
[opancode] > exit
$ cd ~/projects/my-frontend
direnv: unloading
direnv: loading ~/projects/my-frontend/.envrc
direnv: export +NODE_VERSION +NPM_CONFIG_PREFIX ~PATH
$ node --version
v20.11.0
# asdf 常用
direnv allow # 允许当前目录的 .envrc
asdf list # 查看已安装的语言版本
asdf install # 安装 .tool-versions 中指定的版本
# direnv 常用
direnv edit . # 编辑当前目录的 .envrc
direnv reload # 重新加载环境
direnv deny # 拒绝/撤销当前目录权限
# Dev Container
code . # 在 VS Code 中打开,自动提示 "Reopen in Container"
.devcontainer/up.sh # 手动启动容器(如有提供)
.devcontainer/down.sh # 停止容器
| 原则 | 说明 |
|---|---|
| 渐进式 | 从 Layer 1 开始,按需升级到 Layer 2/3 |
| 透明性 | 配置即代码,所有环境定义都在版本控制中 |
| AI 优先 | 专为 AI 编程助手优化,支持自动生成配置 |
| 零侵入 | 不改现有项目结构,只添加配置文件 |
| 团队友好 | 新成员 git clone 后即可获得一致环境 |
我们欢迎所有形式的贡献!
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)如果你有新的技术栈模板想要分享:
templates/future-projects/ 创建新目录.tool-versions, .envrc.example, .devcontainer/(可选)README.md 说明使用方法MIT © 2024 asahiluna
Made with ❤️ for developers who value clean environments
⭐ Star this repo if it helps you!