使用tsc编译Express目录时如何同时处理.json等非TS格式文件
解决方案
方法1:使用TSC原生配置(仅处理.ts和.json文件)
TSC本身支持处理JSON文件,只需修改tsconfig.json配置即可实现编译时自动复制JSON到输出目录:
- 调整编译选项,添加JSON处理支持
{ "compilerOptions": { // 其余原有配置保持不变 "outDir": "./dist", "rootDir": "./src", // 确保源文件根目录正确,输出目录结构会和源目录完全对齐 "resolveJsonModule": true, // 允许TS识别、导入JSON文件,编译时自动复制到输出目录 "esModuleInterop": true // 配合resolveJsonModule使用,避免导入JSON时报类型兼容性错误 }, "include": [ "src/**/*.ts", // 匹配所有TS源文件 "src/**/*.json" // 匹配所有JSON文件 ], "exclude": ["node_modules"] }
- 直接运行
tsc命令即可,无需额外传参,TS会自动将TS编译为JS、JSON原样复制到dist目录的对应路径下。
注意:不要使用
tsc --outDir dist src/**/*这类通配所有文件的命令,会将非TS文件强制作为TS语法解析,触发语法报错。
方法2:TSC配合文件拷贝工具(处理所有类型文件)
如果Express目录下还有其他静态资源(如.env、证书文件、静态模板等TSC不支持处理的文件),可以用TSC负责编译TS文件,搭配跨平台拷贝工具cpx同步其余文件:
- 先安装开发依赖:
npm install cpx -D - 在package.json中添加构建脚本:
{ "scripts": { "build:express": "tsc && cpx \"src/**/*.{json,env,pem,txt}\" dist/" } }
- 运行
npm run build:express即可完成完整构建:先执行TS编译,再将所有匹配后缀的非TS文件复制到dist目录,可根据自身需求调整通配的后缀类型。
内容的提问来源于stack exchange,提问作者skate_23
相关产品推荐
相关产品推荐

