zijunchiang
87a1ded2d2
fix(deploy): install.sh 复制时同样误排除了 storage 目录
用户重装后仍报同一错误,且日志显示「复制 web-server … 174 个文件」。
经复现:发布包内 web-server 有 180 个文件(含 src/storage 2 个、
dist/storage 4 个),但 install.sh 复制后只剩 174 个——storage 被剔除了。
根因:上一轮只修了 package-release.sh,install.sh 里**还有一份独立的
copy_tree() 排除规则**,其中 'storage' 同样未锚定。install.sh 的
COPY_EXCLUDES 与 tar 回退分支都把 'storage' 当作任意层级模式,
于是 src/storage 与 dist/storage 在复制进 /opt/opendance 时被剔除。
这是同一类错误在本项目的第三次(.gitignore → package-release.sh →
install.sh)。因此这次不再只改模式,而是把语义显式化并加硬校验:
- 排除规则拆成三类常量,语义明确:
TOP_DIRS 仅顶层:storage data tmp dist-release → 必须锚定
ANY_DIRS 任意层级:node_modules .git coverage .gradle
TOP_FILES 仅顶层文件:.env .env.local
- rsync 用前导 '/' 锚定;tar 对 TOP_* 只给 './x'(绝不给 '*/storage'),
对 ANY_* 才给 './x' + '*/x'
- 复制后硬校验关键产物(dist/main.js、dist/storage/storage.module.js、
dist/app.module.js、admin/index.html),缺失即 die 并指出是排除规则问题
实测:
- rsync 路径:180 文件,src/storage 与 dist/storage 均在,
运行时 storage 与 .env 未带入,.env.example 保留
- tar 回退路径(隔离 PATH 屏蔽 rsync 后真跑):同样 180 文件,存储目录完整
- git 检出布局:214 文件,嵌套 admin/node_modules 未带入,本地 .env 未带入
- 对照实验:把锚定改回未锚定 → 复制剩 174 文件 → 守卫立刻报
「缺少关键文件 dist/storage/storage.module.js」并终止,不再拖到启动才炸
2026-09-15 01:00:58 +08:00
..
2026-09-15 00:34:52 +08:00
2026-09-14 22:42:56 +08:00
2026-09-15 00:34:52 +08:00
2026-09-14 22:42:56 +08:00
2026-09-14 22:42:56 +08:00
2026-09-15 00:54:22 +08:00
2026-09-15 01:00:58 +08:00
2026-09-15 00:34:52 +08:00