NestJS 项目构建后 assets 与 views 文件夹未生成到 dist 目录问题
问题原因
NestJS 默认使用 TypeScript 编译器(tsc)完成构建,tsc 仅会处理转译 .ts 后缀的代码文件,不会主动复制根目录下的静态资源、模板文件到输出目录,因此项目根目录的 assets、views 文件夹默认不会被打包进 dist。
解决方案
修改项目根目录下的 nest-cli.json 配置文件,在 compilerOptions 节点下添加 assets 规则,指定需要复制的静态资源路径即可,示例配置如下:
{ "$schema": "https://json.schemastore.org/nest-cli", "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { "deleteOutDir": true, "assets": [ // 匹配assets文件夹下所有内容,保留目录结构输出到dist {"include": "../assets/**/*", "outDir": "dist/assets"}, // 匹配views文件夹下所有模板文件,保留目录结构输出到dist {"include": "../views/**/*", "outDir": "dist/views"} ] } }
补充说明:
- 配置中的
../是因为nest-cli.json中的路径默认以sourceRoot指定的src目录为基准,所以需要回退到根目录匹配assets和views文件夹 - 如果你的 NestJS 项目使用自定义 Webpack 配置构建,也可以在 Webpack 配置中添加
copy-webpack-plugin插件,配置规则复制对应文件夹到输出目录,效果一致 - 配置完成后重新执行
npm run build即可看到两个文件夹被正常打包到dist目录下
内容的提问来源于stack exchange,提问作者Ron Barak
相关产品推荐
相关产品推荐

