面向初级维护者:每个检查失败都写明「怎么修」而不只是报错。 - 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
187 lines
5.4 KiB
Batchfile
187 lines
5.4 KiB
Batchfile
@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
|