Skip to content

Repository files navigation

EnvSwitch

语言 / Language: 简体中文 · English

一个帮你集中管理、随手切换多个项目 .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」图标按钮打开关于弹窗,展示版本、运行模式、数据/日志路径与源码地址

怎么用

1. 安装

  • 使用发布版:到 GitHub Releases 下载安装包。
    • Windows:下载 .exe(NSIS 安装包)双击安装。
    • macOS:下载 .dmg(同时提供 Intel 与 Apple Silicon 版本)。
  • 从源码构建(开发者):环境要求 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 窗口直接运行(内嵌服务端 + 构建后的前端)。
    npm run electron-dev
    它会自动生成图标、构建前端并启动 Electron 窗口,应用后端运行在窗口内(系统分配端口)。

2. 添加项目

  1. 点击右上角 "+ 添加项目" 按钮
  2. 输入项目的根目录路径(需包含 .env 文件),支持本地路径和 WSL 路径
  3. 点击确定

3. 切换环境

  1. 项目卡片会显示当前 .env 中的 APP_NAME 和 APP_ENV
  2. 在"环境配置切换"区域:
    • 当前正在用的配置会高亮(浅绿底 + 左侧绿条)并显示绿色「使用中」胶囊——判定依据是 .env 与该 .env.xxx 内容 md5 完全一致(切换是逐字节拷贝,注释 / 引号 / 末尾空行都不影响),所以"真正套用中"哪一份一目了然。若多个 .env.xxx 内容完全相同(md5 都相等),则以你最近一次切换到的那个文件为准高亮(用持久化的上次切换名打破平局,避免多个相同文件随机高亮);若 .env 与所有源文件都不一样,则不高亮任何行(诚实显示"未关联")。
    • 点击任意 .env.xxx 旁的 "切换" / "重新套用" 按钮,即把该文件内容覆盖写入 .env;切换按钮在每一行都常驻,方便随时重新套用(例如源文件被外部改动后)。
  3. 该配置文件的内容将被复制到 .env,界面实时更新

4. 排序与删除

  • 拖拽排序:按住拖拽手柄(⠿)拖动项目卡片调整顺序
  • 删除项目:点击卡片右上角的"删除"按钮移除项目

5. 检查更新

  • 窗口头部「检查更新」按钮(升级箭头图标)可手动触发版本检查,发现新版本会弹窗提示下载安装。
  • 仅打包版本会真正连接 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 报错)。

6. 查看应用信息(App Info)

  • 窗口头部「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 号端口,由操作系统分配唯一空闲端口,且应用启用单实例锁:第二个启动的实例会聚焦已有窗口,不会另起后端,从根本上避免端口争抢与串台。

About

一个帮你集中管理、随手切换多个项目 .env 环境配置的桌面小工具。把零散在各项目目录里的 .env.xxx 收进一个窗口,点一下就把对应配置覆盖到 .env,不用再手动翻文件、复制粘贴还容易敲错。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages