You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止tsc编译时格式化JSON文件?

解决TSC构建时格式化JSON文件的问题

我有一个自动生成的大型复杂JSON文件(无需人工干预),源目录里是无空格的单行格式(大小81k):

{"ver":{"maj":1,"min":0,"uri":"goui.net/phonenumbers/simple/validation_only","ver":1},"typ":[252,253],"svm":3, ...

但运行tsc -b构建后,dist/目录里的该文件被自动添加空格格式化:

{ "ver": { "maj": 1, "min": 0, "uri": "goui.net/phonenumbers/simple/validation_only", "ver": 1 }, "typ": [252, 253], "svm": 3, ...

文件大小增加了约20k,我希望避免这种情况(gzip压缩后的大小差异我不在意),想让tsc停止修改这类本该直接复制的文件。


核心结论:TypeScript无内置配置可禁用JSON格式化

目前TypeScript编译器没有提供配置选项,能让它原样复制JSON文件。当你在tsconfig.json的include中包含*.json,且开启resolveJsonModule时,tsc会解析JSON内容,然后以格式化后的结构重新输出,这是默认行为,没有开关能改变。

替代方案:手动复制JSON文件(Windows环境)

要保留JSON的原始格式,你需要让tsc不再处理该文件,改用复制命令将源文件直接同步到dist目录:

  1. 修改tsconfig.json
    从include数组中移除"*.json",避免tsc再处理这些文件:

    {
      "extends": "../tsconfig.json",
      "include": [
        "*" // 去掉"*.json"
      ],
      "compilerOptions": {
        "rootDir": "./",
        "outDir": "../dist",
        "composite": true
      }
    }
    
  2. 使用Windows命令行复制

    • 单个文件复制:
      copy "你的源文件路径\file.json" "dist\file.json" /Y
      
      /Y参数表示覆盖目标文件时不弹出确认提示。
    • 批量复制所有JSON文件:
      xcopy "你的源目录\*.json" "dist\" /Y /I
      
      /I参数表示如果目标目录不存在则自动创建。
  3. 整合到构建脚本
    把复制命令加到package.json的scripts里,这样执行构建时会自动完成复制:

    {
      "scripts": {
        "build": "tsc -b && copy \"src\\file.json\" \"dist\\file.json\" /Y"
      }
    }
    

    之后运行npm run build就会先执行tsc构建,再复制JSON文件到dist目录。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:35:53