TSConfig备忘录

2024-03-16  本文已影响0人  涅槃快乐是金

tsconfig.json是一个巨大的文件,包含大量潜在选项,能够吓到了每个人。

但实际上,你只需要关心几个配置选项。让我们找出它们,并制作速查表。

快速开始

只想要代码?

{
  "compilerOptions": {
    /* 基本选项: */
    "esModuleInterop": true,
    "skipLibCheck": true,
    "target": "es2022",
    "allowJs": true,
    "resolveJsonModule": true,
    "moduleDetection": "force",
    "isolatedModules": true,
    /* 严格性 */
    "strict": true,
    "noUncheckedIndexedAccess": true,
    /* 如果使用 TypeScript 进行转译: */
    "moduleResolution": "NodeNext",
    "module": "NodeNext",
    "outDir": "dist",
    "sourceMap": true,
    /* 还有如果你正在构建一个库: */
    "declaration": true,
    /* 以及如果你在单体库中构建一个库: */
    "composite": true,
    "declarationMap": true,
    /* 如果不使用 TypeScript 进行转译: */
    "moduleResolution": "Bundler",
    "module": "preserve",
    "noEmit": true,
    /* 如果你的代码在 DOM 中运行: */
    "lib": ["es2022", "dom", "dom.iterable"],
    /* 如果你的代码不在 DOM 中运行: */
    "lib": ["es2022"]
  }
}

全面解释

基本选项

以下是我建议所有项目使用的基本选项。

{
  "compilerOptions": {
    "esModuleInterop": true,
    "skipLibCheck": true,
    "target": "es2022",
    "allowJs": true,
    "resolveJsonModule": true,
    "moduleDetection": "force",
    "isolatedModules": true
  }
}
严格性

以下是我建议所有项目使用的严格性选项。

{
  "compilerOptions": {
    "strict": true,
    "noUncheckedIndexedAccess": true
  }
}
使用 TypeScript 进行转译

如果你正在使用tsc 进行代码转译(创建 JavaScript文件),你会想要这些选项。

{
  "compilerOptions": {
    "moduleResolution": "NodeNext",
    "module": "NodeNext",
    "outDir": "dist"
  }
}

构建库

如果你正在构建一个库,你会想要 declaration: true

{
  "compilerOptions": {
    "declaration": true
  }
}
在单体库中构建库

如果你在单体库中构建一个库,你还会想要这些选项。

{
  "compilerOptions": {
    "declaration": true,
    "composite": true,
    "sourceMap": true,
    "declarationMap": true
  }
}
不使用 TypeScript 进行代码转译

如果你不使用 tsc进行代码转译,也就是说,将 TypeScript更多地用作 linter,你会想要这些选项。

{
  "compilerOptions": {
    "moduleResolution": "Bundler",
    "module": "preserve",
    "noEmit": true
  }
}
在 DOM 中运行

如果你的代码在 DOM 中运行,你会想要这些选项。

{
  "compilerOptions": {
    "lib": ["es2022", "dom", "dom.iterable"]
  }
}
不在 DOM 中运行

如果你的代码不在 DOM 中运行,你会想要 lib: ["es2022"]

{
  "compilerOptions": {
    "lib": ["es2022"]
  }
}

这与上述相同,但没有domdom.iterable 类型。

上一篇 下一篇

猜你喜欢

热点阅读