Files
cmsp/run_dev.bat
T
QiuSWandClaude Opus 5 080a77ab5d chore: 增加 run_dev.bat 与 build.bat 启动打包脚本
面向初级维护者:每个检查失败都写明「怎么修」而不只是报错。
- run_dev.bat:检查 Go/Node/Wails/配置/前端依赖后启动开发模式,
  缺 config.yaml 时自动从 config.example.yaml 复制
- build.bat:打包前先跑单元测试,测试不过拒绝打包(可用 skiptest 强制);
  打包成功后提示不要把 config.yaml 和 cmsp.db 一起发给同事

两个脚本必须是 GBK 编码 + CRLF 行尾:cmd 用系统 ANSI 代码页解析 .bat,
存成 UTF-8 会让中文注释把命令行拆坏(实测报「不是内部命令」);
UTF-8 带 BOM 则会让 @echo off 失效。.gitattributes 用 *.bat -text
让 Git 原样存取,已验证磁盘字节与 Git 存储字节一致。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
2026-09-02 16:45:02 +08:00

187 lines
5.4 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
setlocal
rem ============================================================
rem [编码提醒] 本文件必须保存为 GBK / ANSI 编码,CRLF 行尾。
rem 存成 UTF-8 会让 cmd 解析中文出错,脚本直接跑不起来。
rem 用 VS Code 编辑时,右下角编码要选 GB2312/GBK 再保存。
rem ============================================================
rem cmsp 开发模式启动脚本
rem
rem 双击本文件即可启动开发模式:改前端代码会自动刷新,
rem 改 Go 代码会自动重新编译。调试界面问题用这个,不要用 build.bat。
rem
rem 想打包成给同事用的 exe,请双击 build.bat。
rem
rem 遇到报错先看提示里的「怎么修」,照着做通常就好了。
rem 实在解决不了,把整个黑窗口截图发给维护者。
rem ============================================================
cd /d "%~dp0"
echo.
echo ============================================================
echo cmsp 开发模式
echo ============================================================
echo.
rem ---------- 检查 1:Go ----------
echo [1/5] 检查 Go ...
where go >nul 2>nul
if errorlevel 1 (
echo.
echo [X] 没有找到 go 命令。
echo.
echo 怎么修:
echo 1. 到 https://go.dev/dl/ 下载 Go 并安装
echo 2. 装完关掉这个窗口,重新双击本脚本
echo ^(装完必须重开窗口,否则读不到新的 PATH^)
echo.
goto :fail
)
for /f "tokens=3" %%v in ('go version') do set GOVER=%%v
echo OK %GOVER%
rem 本机 Go 可能低于 Wails 要求的版本,靠 GOTOOLCHAIN 自动下载补齐。
rem 这是 Go 官方机制,第一次构建会联网拉工具链,属于正常现象。
echo 提示:go.mod 要求的版本可能高于本机 Go,
echo Go 会自动下载对应工具链,第一次需要联网。
rem ---------- 检查 2:Node ----------
echo [2/5] 检查 Node.js ...
where node >nul 2>nul
if errorlevel 1 (
echo.
echo [X] 没有找到 node 命令。
echo.
echo 怎么修:
echo 1. 到 https://nodejs.org/ 下载 LTS 版本并安装
echo 2. 装完关掉这个窗口,重新双击本脚本
echo.
goto :fail
)
for /f %%v in ('node --version') do set NODEVER=%%v
echo OK %NODEVER%
rem ---------- 检查 3:Wails CLI ----------
echo [3/5] 检查 Wails 命令行工具 ...
set "WAILS="
where wails >nul 2>nul
if not errorlevel 1 set "WAILS=wails"
rem where 找不到时,再去 Go 的默认安装目录找一次。
rem 很多人装完 Go 工具没把 %GOPATH%\bin 加进 PATH,这里兜住。
if not defined WAILS (
for /f "delims=" %%p in ('go env GOPATH') do (
if exist "%%p\bin\wails.exe" set "WAILS=%%p\bin\wails.exe"
)
)
if not defined WAILS (
echo.
echo [X] 没有找到 wails 命令。
echo.
echo 怎么修:在这个窗口里执行下面这条命令,装完再重新双击本脚本
echo.
echo go install github.com/wailsapp/wails/v2/cmd/wails@latest
echo.
echo 注意要装 v2,不要装 v3。本项目用的是 Wails v2 稳定版。
echo.
goto :fail
)
echo OK 找到 wails
rem ---------- 检查 4:配置文件 ----------
echo [4/5] 检查配置文件 ...
if not exist "config.yaml" (
echo config.yaml 不存在,从模板复制一份 ...
if exist "config.example.yaml" (
copy /y "config.example.yaml" "config.yaml" >nul
echo 已生成 config.yaml
echo.
echo 注意:里面的账号密码还是模板里的占位值。
echo 程序启动后到「参数设置」页填真实账号,
echo 或者直接用记事本编辑 config.yaml。
echo.
) else (
echo 没有 config.example.yaml,跳过。
echo 程序会用内置默认值启动,到「参数设置」页填即可。
)
) else (
echo OK config.yaml 已存在
)
rem ---------- 检查 5:前端依赖 ----------
echo [5/5] 检查前端依赖 ...
if not exist "frontend\node_modules" (
echo node_modules 不存在,开始安装,第一次要几分钟 ...
pushd frontend
call npm install
if errorlevel 1 (
popd
echo.
echo [X] npm install 失败。
echo.
echo 怎么修:
echo 1. 确认能上网
echo 2. 公司网络受限时换个镜像源再试:
echo npm config set registry https://registry.npmmirror.com
echo 3. 还不行就删掉 frontend\node_modules 和
echo frontend\package-lock.json 再跑一次
echo.
goto :fail
)
popd
echo 依赖安装完成
) else (
echo OK 依赖已安装
)
rem ---------- 启动 ----------
echo.
echo ============================================================
echo 一切就绪,正在启动开发模式 ...
echo.
echo 窗口打开后:
echo - 改 frontend\src 下的文件,界面会自动刷新
echo - 改 .go 文件,程序会自动重新编译并重启
echo - 按 Ctrl+C 或关掉这个黑窗口即可停止
echo.
echo 第一次启动要编译,可能等十几秒,属于正常。
echo ============================================================
echo.
"%WAILS%" dev
set RESULT=%errorlevel%
if not "%RESULT%"=="0" (
echo.
echo [X] 开发模式异常退出,错误码 %RESULT%
echo.
echo 常见原因:
echo - Go 代码有编译错误:往上翻,找红色的报错行
echo - 端口被占用:关掉之前没退干净的 cmsp 窗口再试
echo - 依赖没下全:执行 go mod download 后重试
echo.
goto :fail
)
echo.
echo 开发模式已退出。
goto :done
:fail
echo.
echo ============================================================
echo 启动失败。上面写了怎么修,照着做通常就好。
echo 解决不了就把这个窗口截图发给维护者。
echo ============================================================
echo.
pause
exit /b 1
:done
echo.
pause
exit /b 0