为什么Vite会创建两个TypeScript配置文件:tsconfig.json和tsconfig.node.json?

问题描述 投票:0回答:2

我正在使用 Vite 创建一个新的 React + TypeScript 项目

创建项目后,根文件夹中有两个 TypeScript 配置文件:

tsconfig.json
tsconfig.node.json
。以下是每一篇的内容:

tsconfig.json

{
    "compilerOptions": {
        "target": "ESNext",
        "useDefineForClassFields": true,
        "lib": ["DOM", "DOM.Iterable", "ESNext"],
        "allowJs": false,
        "skipLibCheck": false,
        "esModuleInterop": false,
        "allowSyntheticDefaultImports": true,
        "strict": true,
        "forceConsistentCasingInFileNames": true,
        "module": "ESNext",
        "moduleResolution": "Node",
        "resolveJsonModule": true,
        "isolatedModules": true,
        "noEmit": true,
        "jsx": "react-jsx"
    },
    "include": ["src"],
    "references": [{ "path": "./tsconfig.node.json" }]
}

tsconfig.node.json

{
    "compilerOptions": {
        "composite": true,
        "module": "esnext",
        "moduleResolution": "node"
    },
    "include": ["vite.config.ts"]
}

为什么我们需要两个?

第二个是做什么的?

我可以删除第二个吗?

javascript typescript tsconfig vite
2个回答
57
投票

您需要两个不同的 TS 配置,因为该项目使用两种不同的环境来执行 TypeScript 代码:

  1. 您的应用程序(
    src
    文件夹)正在浏览器内定位(将运行)
  2. Vite 本身(包括其配置)在您的计算机上的 Node 中运行,这是完全不同的环境(与浏览器相比),具有不同的 API 和约束

因此,这些环境有两个单独的配置,以及由这些配置的

include
exclude
部分定义的两组源文件。然后有一个“主”配置
tsconfig.json
“统治它们”

不,您可能不想删除

tsconfig.node.json
,但您可以将其重命名为
tsconfig.vite.json
之类的名称,以使其用途更加清晰。如果这样做,请确保相应地更新“主”配置


4
投票

正如 Michal Levý 所提到的,这些是针对不同环境的不同配置。

您会注意到

tsconfig.json
包含一个“引用”键,该键指向包含
tsconfig.node.json
文件的数组。如果您想更改 vite tsconfig 的文件名,请务必更新此参考。

© www.soinside.com 2019 - 2024. All rights reserved.