一个帮你集中管理、随手切换多个项目
.env环境配置的桌面小工具。把零散在各项目目录里的.env.xxx收进一个窗口,点一下就把对应配置覆盖到.env,不用再手动翻文件、复制粘贴还容易敲错。
日常开发中,我们手里的项目越来越多,每个项目目录下都有一堆 .env / .env.development / .env.production / .env.staging……
- 记不住哪个文件对应哪个环境,改之前还要先备份原
.env; - 复制粘贴切换配置,稍不注意就漏改、改错,甚至把生产配置贴到本地;
- 多项目之间来回切,终端里
cp来cp去,效率低还容易串。
EnvSwitch 把这些 .env 集中管起来:
- 不用翻目录、不用手敲命令:所有环境文件都在一个窗口里,点一下就把
.env.xxx覆盖到.env,实时生效。 - 不怕改错:界面列出项目的全部
.env.xxx,切换前一目了然;原.env内容会被覆盖,重要配置建议先备份。 - 实时可见:用 chokidar 监控
.env变化,配合 Socket.IO 实时推送到界面,文件被外部改了也能立刻看到。 - 多项目集中管理:多个项目目录一起管理,卡片拖拽排序,顺序自动持久化。
简单说,它是一个给 .env 用的「切换器 + 管理器」,让重复性的环境切换变成点点鼠标的事。
| 功能 | 说明 |
|---|---|
| 📁 多项目管理 | 添加多个项目目录,集中管理所有项目的环境配置 |
| ⚡ 一键切换环境 | 列出项目下的 .env.xxx 文件,点击即将对应配置覆盖到 .env |
| 👀 实时监控 | 本地路径基于 chokidar、WSL 路径用定时轮询兜底,配合 Socket.IO 把 .env 变化实时推送到界面 |
| 支持拖拽调整项目卡片顺序,排序结果自动持久化 | |
| 🟢 当前在用配置高亮 | 实时 md5 比对 .env 与各 .env.xxx,命中行高亮(浅绿底 + 左绿条)并显示「使用中」胶囊;切换按钮常驻,可随时一键重新套用 |
| 🔃 手动刷新数据 | 头部「刷新数据」按钮手动重新拉取所有项目,覆盖 WSL 等无法自动监听变化的场景 |
| ⚙️ 设置 | 头部「Settings」图标按钮打开设置弹窗,可调整 WSL 轮询间隔等 |
| 🐧 WSL 支持 | 兼容 Windows Subsystem for Linux 路径(\\wsl.localhost\Ubuntu\...) |
| 🖥️ 桌面应用 | Electron 打包,Windows / macOS 独立运行,无需常开终端 |
| 🔄 自动更新 | 打包版本可检查 GitHub Release 上的新版本,更新日志按 Release 风格展示 |
| 🔒 系统分配端口 | 后端监听 0 号端口由系统分配,配合单实例锁,避免多实例串台 |
| ℹ️ 应用信息 | 头部「App info」图标按钮打开关于弹窗,展示版本、运行模式、数据/日志路径与源码地址 |
- 使用发布版:到 GitHub Releases 下载安装包。
- Windows:下载
.exe(NSIS 安装包)双击安装。 - macOS:下载
.dmg(同时提供 Intel 与 Apple Silicon 版本)。
- Windows:下载
- 从源码构建(开发者):环境要求 Node.js >= 18、npm >= 9。
npm install cd client && npm install npm run electron-build # 构建 Windows 安装包 # 或(需在 macOS 环境下) npm run electron-build-mac # 构建 macOS dmg + zip
- 本地开发调试:以 Electron 窗口直接运行(内嵌服务端 + 构建后的前端)。
它会自动生成图标、构建前端并启动 Electron 窗口,应用后端运行在窗口内(系统分配端口)。
npm run electron-dev
- 点击右上角 "+ 添加项目" 按钮
- 输入项目的根目录路径(需包含
.env文件),支持本地路径和 WSL 路径 - 点击确定
- 项目卡片会显示当前
.env中的APP_NAME和APP_ENV - 在"环境配置切换"区域:
- 当前正在用的配置会高亮(浅绿底 + 左侧绿条)并显示绿色「使用中」胶囊——判定依据是
.env与该.env.xxx内容 md5 完全一致(切换是逐字节拷贝,注释 / 引号 / 末尾空行都不影响),所以"真正套用中"哪一份一目了然。若多个.env.xxx内容完全相同(md5 都相等),则以你最近一次切换到的那个文件为准高亮(用持久化的上次切换名打破平局,避免多个相同文件随机高亮);若.env与所有源文件都不一样,则不高亮任何行(诚实显示"未关联")。 - 点击任意
.env.xxx旁的 "切换" / "重新套用" 按钮,即把该文件内容覆盖写入.env;切换按钮在每一行都常驻,方便随时重新套用(例如源文件被外部改动后)。
- 当前正在用的配置会高亮(浅绿底 + 左侧绿条)并显示绿色「使用中」胶囊——判定依据是
- 该配置文件的内容将被复制到
.env,界面实时更新
- 拖拽排序:按住拖拽手柄(⠿)拖动项目卡片调整顺序
- 删除项目:点击卡片右上角的"删除"按钮移除项目
- 窗口头部「检查更新」按钮(升级箭头图标)可手动触发版本检查,发现新版本会弹窗提示下载安装。
- 仅打包版本会真正连接 GitHub Releases;开发模式(未打包)下检查会提示 "Running in dev mode",不会联网。
- 平台差异:Windows 走 electron-updater(NSIS 流程,未签名可用);macOS 因个人发布无 Apple 签名,采用自研更新器——直接下载 GitHub Release 的 zip、
ditto解压、后台脚本替换.app并去除 quarantine 标记,从而无需签名即可完成更新(绕开 electron-updater 在 macOS 上对运行 App 代码签名的强制校验,避免出现Could not get code signature for running application报错)。
- 窗口头部「App info」图标按钮打开关于弹窗。
- 可查看:当前版本号、运行模式(Development / Production)、数据文件与日志文件的完整路径(带 Copy 按钮方便复制),以及源码仓库链接。
- 点击「Source」的 GitHub 链接会在系统默认浏览器中打开;排查问题时,路径与版本信息可直接定位数据目录与日志目录。
| 平台 | 状态 | 说明 |
|---|---|---|
| Windows 10/11 | ✅ | NSIS 安装包(.exe) |
| macOS(Intel) | ✅ | .dmg / .zip |
| macOS(Apple Silicon) | ✅ | .dmg / .zip |
| Linux | 🔧 | 未提供对应包体 |
Q:数据存在哪?
- 桌面应用(打包或
npm run electron-dev):数据在 Electron 用户数据目录app.getPath('userData')/data/data.json。 - 卸载或重装桌面应用前,请按需备份该目录。
Q:切换环境会破坏原 .env 吗?
会。切换是把选中 .env.xxx 的内容覆盖写入 .env,原 .env 内容会被替换。重要配置请在切换前自行备份,或先复制一份 .env.backup。
Q:明明改了 .env,界面没更新?
- 本地项目路径:界面通过 chokidar 实时监控
.env变化并实时推送。 - WSL 路径(
\\wsl.localhost\...):chokidar 不可靠,已改为定时轮询兜底(默认每 10 秒列举并重算 md5,可在设置中调整为 500ms–1 分钟),变化会在下次轮询时自动刷新;若仍想立即刷新,点头部「刷新数据」按钮即可手动拉取全部项目。
Q:自动更新提示 dev mode / 连不上?
自动更新只在打包版本生效,更新源为 GitHub Releases(仓库 bynow2code/env-switch)。开发模式仅显示提示,不会联网;若仓库为私有,需在更新源配置中提供 token。
Q:端口被占用 / 打开多个窗口串台?
桌面应用(打包 / electron-dev)的后端监听 0 号端口,由操作系统分配唯一空闲端口,且应用启用单实例锁:第二个启动的实例会聚焦已有窗口,不会另起后端,从根本上避免端口争抢与串台。