Files
web/deploy

deploy 目录(与 api 相同:仅替换构建产物;web 容器除 web/public 外不挂源码目录)

  • deploy/web/dist:前台构建产物,由 pull-and-restart.sh 生成;替换此目录内容即可更新前台。
  • deploy/admin/dist:后台构建产物,同上。后台 Vite 通过 @yh-web 引用 ../web/src(如积木 BlockRenderer),用 Docker 单目录挂载 admin 时会构建失败,须挂载项目根再在 admin 下执行 npm run build(见 pull-and-restart.sh)。
  • deploy/api/serverAPI 二进制,同上;替换后重启 api 容器生效。
  • deploy/web/default.confdeploy/admin/default.confNginx 配置,已纳入版本库。

日常更新:在服务器执行 ./pull-and-restart.sh 会拉代码、重新构建到上述目录并重启容器。若只改静态资源,也可在服务器上手动构建后只重启对应容器。

后台白屏 / 控制台 “MIME type text/html” 针对 index-*.js

表示浏览器拿到的不是 JS而是 HTML常见/assets/*.js 被 SPA 回退成 index.html,或 404 返回了 HTML 错误页)。

  1. 确认 Nginx 配置已更新deploy/admin/default.conf 须含 location ^~ /assets/try_files $uri =404(与仓库内 admin/nginx.conf 一致),挂载后重启 admin 容器。
  2. 确认 dist 完整deploy/admin/dist/assets/ 下须有与 index.html<script type="module"> 引用同名的哈希文件;发版后应整目录替换 dist(勿只拷 index.html)。
  3. 本地重建:在项目根按 pull-and-restart.sh 方式在 admin/ 执行 npm run buildvite.configbase 须为 '/admin/'
  4. 勿用旧版 nginx/admin.conf:若曾把仅含 location / 的旧配置拷到服务器,会导致 /assets/*.js 全部变成 index.html(约 640B、MIME 错)。请以 deploy/admin/default.confadmin/nginx.conf 为准,并 docker compose restart admin nginx
  5. 若出现 500:外层 yuheng.docker.conf.tpl 仅用 location /admin/ 反代即可(勿对 /admin/assets/ 再写 rewrite + 变量 proxy_pass,部分环境会 500);白屏仍以 内层 deploy/admin/default.conf^~ /assets/ 为准。
  6. restart.sh 构建 admin 已与 pull-and-restart.sh 一致(挂载项目根到容器,否则 @yh-web 无法解析)。发版后脚本会执行 scripts/verify-admin-dist.sh:若 index.html 引用的 chunk 在 dist/assets/ 中缺失或过小(几百字节),会直接报错退出,避免白屏上线。