NestJS启动时dist目录JSON文件丢失问题求助
解决NestJS开发模式下JSON文件无法复制到dist的问题
问题根源
nest start --watch 是持续运行的阻塞命令,脚本中&&连接的后续命令(yarn copy:json)会在前置命令结束后才执行,但watch模式下Nest进程一直运行,导致复制命令永远不会触发。
方案一:使用NestJS原生资产复制配置(推荐)
直接通过nest-cli.json配置让NestJS自动复制指定文件,无需额外依赖:
- 打开项目根目录的
nest-cli.json,找到compilerOptions节点 - 添加
assets和watchAssets配置:
{ "compilerOptions": { "assets": ["engines/**/*.json"], "watchAssets": true, // 其他原有配置... } }
assets:指定需要复制到dist的文件路径(相对于src目录)watchAssets:开启监听,当JSON文件修改时自动同步到dist
配置完成后,直接运行yarn start:dev即可,Nest会在构建/重启时自动复制JSON文件,文件修改后也会同步更新。
方案二:用concurrently并行执行命令
如果不想修改Nest配置,可以借助concurrently实现命令并行:
- 安装依赖:
yarn add -D concurrently
- 修改
package.json中的scripts:
{ "scripts": { "copy:json": "copyfiles -u 2 src/engines/**/*.json dist/engines", "copy:watch": "copyfiles -u 2 -w src/engines/**/*.json dist/engines", "start": "nest start && yarn copy:json", "start:dev": "yarn copy:json && concurrently \"nest start --watch\" \"yarn copy:watch\"" } }
copy:watch:添加-w参数监听JSON文件变化,自动重新复制concurrently:同时启动Nest的watch模式和JSON文件监听复制命令
这样启动yarn start:dev时,会先执行一次初始复制,之后并行运行两个监听进程,确保JSON文件始终同步到dist。
内容的提问来源于stack exchange,提问作者serge
相关产品推荐
相关产品推荐

