npm install --save-dev copyfiles
"scripts": { "copy": "copyfiles -u 1 \"src/assets/**/*\" dist" }

同一份 package.json,Mac 上 npm run copy 正常,Windows 上提示 The system cannot find the path specified。脚本里写的是 cp -r src/assets dist/assets。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:npm scripts 在 Windows 上默认交给 cmd.exe,没有 cp 这个命令,路径里的正斜杠也不会被当成目录分隔符处理。跨平台工具链在两种 shell 下的解析规则本来就不一样。

这次卡住的地方就在「npm 脚本路径分隔符」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

处理上按这个顺序:用跨平台包替代 shell 命令 比如 copyfiles 或 shx;或者脚本里显式调 node 自己处理路径;必须留 shell 命令就拆成两份 按平台选;路径统一用 path.join 拼 不在字符串里手写分隔符。

确认没问题再收工,Windows 上 npm run copy 退出码 0 目标目录文件数量与源目录一致。

作者 9823189