使用tsc编译TypeScript为JavaScript时如何忽略.json文件
tsc编译引入JSON文件问题解决方案
tsc的exclude规则仅对未被其他TS文件引入的文件生效,只要JSON文件被TS代码import,就会被纳入编译流程,所以你之前的exclude配置不生效,可选择以下两种方案处理:
方案1:保留JSON文件,调整配置和编译流程(优先推荐,改动最小)
- 首先在
tsconfig.json中开启JSON解析配置,让tsc正确识别JSON导入:
{ "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true, "outDir": "dist_server", // 其余原有配置保持不变 }, "include": ["express/**/*"] }
- 不要在命令行用
tsc --outDir dist_server express/**/*的形式传文件,通配符会把JSON文件直接作为编译输入传给tsc触发报错,直接执行tsc命令即可,所有规则走tsconfig配置。 - 如果你需要JSON文件原样输出到dist目录,在构建流程中新增复制步骤即可,修改package.json的scripts配置:
{ "scripts": { "build": "tsc && cp -r express/**/*.json dist_server/" } }
Windows环境可将cp替换为xcopy,跨平台场景可安装cpx等工具实现跨平台复制。
方案2:将JSON配置转为TS文件
如果不想额外处理JSON复制逻辑,可以直接把配置类JSON改为TS导出,还能获得额外的类型提示:
- 把原xxx.json文件改为xxx.ts,修改内容格式:
// 原JSON内容 // { "port": 3000, "host": "127.0.0.1" } // 改为TS导出 export default { port: 3000, host: "127.0.0.1" } as const;
- 把原有导入JSON的语句
import config from './xxx.json'改为import config from './xxx.ts'即可,不需要额外配置JSON相关的编译选项。
内容的提问来源于stack exchange,提问作者skate_23
相关产品推荐
相关产品推荐

