【TS】tsconfig.json、tsconfig.node.json和tsconfig.app.json的作用与关系

前言

使用 Vite 创建 TS 项目默认会自动生成三个 tsconfig 相关的文件,分别是:tsconfig.json、tsconfig.node.json、tsconfig.app.json。

  • tsconfig.node.json:用于配置 vite.config.ts 文件的编译规则
  • tsconfig.app.json:为项目中其他文件进行 TypeScript 编译,不包括测试文件、构建工具等。
  • tsconfig.json:TS 只识别 tsconfig.json 为配置文件,该文件中引用为了更精细化的控制,需要分别引入tsconfig.node.json、tsconfig.app.json。

tsconfig.json

tsconfig.json 是 TypeScript 项目的主配置文件,用于定义 TypeScript 编译器的行为。它指定了如何编译 TypeScript 代码,包括哪些文件需要被编译、编译选项、输出目录等。

主要功能:

  • 配置 TypeScript 编译选项,如 target、module、strict 等。
  • 定义要编译的文件(通过 files、include、exclude)。
  • 配置输出目录(通过 outDir)。
  • 配置编译时的严格检查(如 strict)。

tsconfig.app.json

配置项完全同 tsconfig.json,默认如下:

{
  "compilerOptions": {
    // "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
    "target": "ES2020",
    "useDefineForClassFields": true,
    "module": "ESNext",
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "skipLibCheck": true,

    /* Bundler mode */
    "moduleResolution": "Bundler",
    "allowImportingTsExtensions": true,
    "isolatedModules": true,
    "moduleDetection": "force",
    "noEmit": true,
    "jsx": "preserve",

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noFallthroughCasesInSwitch": true,
  },
  "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}

后续如果需要对项目文件如 .vue .ts 扩展,在此文件中添加配置即可,如配置 @ 路径别名:

{
  "compilerOptions": {
  	......
     /* 新增的配置 */
    "baseUrl": "./",  // 设置基准路径,通常是项目根目录
    "paths": {
      "@/*": ["src/*"]  // 配置 @ 别名指向 src 目录
    }
  },
}

tsconfig.node.json

项目中用于定义 vite.config.ts 的编译规则

### 关于 `tsconfig.app.json` 文件配置说明 在 TypeScript 项目中,`tsconfig.app.json` 主要用于特定应用程序模块的编译配置。此文件通常位于项目的根目录下,并继承自更高级别的 `tsconfig.json` 或其他基础配置文件。 #### 继承扩展 为了保持一致性并减少重复定义,`tsconfig.app.json` 可能会通过 `"extends"` 字段来继承另一个配置文件中的设置[^4]: ```json { "extends": "./tsconfig.base.json", } ``` 这使得多个应用可以共享相同的基线配置,同时允许各自覆盖或添加特有的选项。 #### 编译路径映射 对于大型单页应用(SPA),可能需要调整模块解析规则以便更好地支持本地开发环境下的相对导入语句。可以通过如下方式配置路径别名: ```json "compilerOptions": { ... "baseUrl": ".", "paths": { "@app/*": ["src/app/*"], "@env/*": ["src/environments/*"] } }, ``` 上述例子展示了如何创建两个简单的路径别名:一个是针对应用程序源码(`@app`);另一个则是指向不同运行环境下所需的不同配置(`@env`)。 #### 排除不必要的文件 有时希望排除某些测试代码或其他不需要参实际构建过程的部分,在这种情况下可以在 `exclude` 数组里列出这些模式匹配串: ```json "exclude": [ "node_modules", "**/*.spec.ts" ], ``` 这里指定了不包含 node_modules 中的内容以及所有的单元测试文件(假设它们都以 .spec.ts 结尾)。 #### 输出目标设定 如果应用程序有特殊的输出需求,则可在该配置文件内单独指定相应的参数,比如更改生成 JavaScript 的版本兼容性或是优化后的打包位置等。 ```json "compilerOptions": { ... "target": "es5", // 设置JavaScript的目标版本 "outDir": "./dist/apps/main-app/" // 定义最终编译产物存放的位置 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田本初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值