Node.js 12 的 TypeScript tsconfig 设置?

Lin*_*äck 77 node.js typescript

tsconfig输出将在 Node.js 12 上运行的代码的最佳 TypeScript设置是什么?

Lin*_*äck 205

从 Node.js 开始12.0.0,100% 支持 ES2019。如果您知道您的目标是该版本或更新版本,则最佳配置如下所示:

  • "module": "commonjs"

    Node.js 正在添加 ES-Modules,但现在我们必须坚持使用 CommonJS。

  • "target": "es2019"

    这告诉 TypeScript 可以输出具有 ES2019 特性的JavaScript语法。在实践中,这意味着它将例如输出对象 rest/spread 属性和 async/await 语法,而不是嵌入 polyfill。

  • "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]

    这告诉 TypeScript 可以使用ES2019 或更早版本中引入的函数和属性。实际上,这意味着您可以使用 egString.prototype.trimStartArray.prototype.flat

    除了 ES2019,Node.js 12 还支持来自 ES2020 的BigInt& matchAll,因此我们包含了来自 ES2020 的附加定义。

因此,完整的配置将是:

{
  "compilerOptions": {
    "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
    "module": "commonjs",
    "target": "es2019"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您的目标是 Node.js12.9.0或更新版本,您可以简单地指定"lib": ["es2020"]该版本支持ES2020 中引入的所有新功能和属性。但它不支持新的 JavaScript语法,因此您仍然必须继续使用"target": "es2019".

因此,完整的配置将是:

{
  "compilerOptions": {
    "lib": ["es2020"],
    "module": "commonjs",
    "target": "es2019"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您正在运行 Node.js 16,您可以在此处看到我对 Node.js 16 的类似回答

如果您正在运行 Node.js 14,您可以在此处看到我对 Node.js 14 的类似回答

如果您正在运行 Node.js 10,您可以在此处看到我对 Node.js 10 的类似回答

如果你正在运行 Node.js 8 你可以在这里看到我对 Node.js 8 的类似回答

  • @IAmKale 感谢你的善意之言!TypeScript 不会发布该信息,相反,我的答案主要基于 node.green、我自己的一些测试以及 TypeScript 文档 (3认同)
  • @IvanYarych 我的答案的底部有一个 Node.js >= 12.9.0 的部分,其中包括 [es2020](https://github.com/microsoft/TypeScript/blob/master/lib/lib.es2020.d。 ts),其中又包含 es2020.promise (2认同)
  • @PiersMacDonald 嗯,这很不幸。似乎没有办法告诉 TypeScript 不支持 nullish 合并,而 BigInt 文字则支持。如果将目标设置为 ES2020 TypeScript 将发出 Node 不支持的 `??`...如果可能,我建议您升级到支持完整 ES2020 目标的 Node.js 14。 (2认同)

rra*_*naa 21

翻译:博士

TypeScript 维护了与 node 版本对应的 target、module 和 lib 的映射。你可以在这里找到它 https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping


the*_*ian 7

使用tsconfig bases更容易。

运行npm install --save-dev @tsconfig/node12然后在tsconfig.json中

{
  "extends": "@tsconfig/node12/tsconfig.json",
  // ...your configrations
}
Run Code Online (Sandbox Code Playgroud)

有一些适用于不同环境的 tsconfig 基础,并且社区不断添加更多。


归档时间:

查看次数:

22840 次

最近记录:

4 年,5 月 前