Express+TypeScript项目根目录JSON文件未编译输出到dist文件夹如何解决
问题原因
TypeScript编译器(tsc)默认仅处理.ts/.tsx后缀的源码文件,你开启的resolveJsonModule配置仅支持在TS代码中导入JSON模块,不会自动将未被导入的、存放在源码外的JSON配置文件输出到outDir指定的dist目录。
解决方案
方案1:修改构建脚本追加复制操作(最简便,适配纯tsc编译场景)
直接在package.json的build命令后追加文件复制逻辑即可:
- 若仅在Mac/Linux环境下部署,将build命令修改为:
"scripts": { "build": "tsc && cp appsettings*.json swagger.json dist/" } - 若需要兼容Windows跨平台运行,先安装轻量复制工具cpx为开发依赖:
再修改build命令:npm i cpx -D
如果后续要复制子目录下的静态资源,修改匹配规则即可,比如要复制assets目录下所有文件可以写成"scripts": { "build": "tsc && cpx \"*.json\" dist/" }cpx "assets/**/*" dist/assets/。
方案2:使用构建工具处理(适配已接入webpack/rollup的项目)
如果你的项目已经接入了webpack等构建工具,可以添加对应的资源处理插件:
- webpack场景下安装
copy-webpack-plugin,配置直接匹配根目录的JSON文件输出到dist目录即可。
验证方法
执行npm run build后检查dist目录,确认对应的JSON文件已经正常输出,启动dist目录下的编译后服务测试配置读取逻辑正常即可。
内容的提问来源于stack exchange,提问作者JOSE HERRADA
相关产品推荐
相关产品推荐

