Quais são as tsconfig
configurações ideais do TypeScript para a saída de código que será executado no Node.js. 12?
fonte
Quais são as tsconfig
configurações ideais do TypeScript para a saída de código que será executado no Node.js. 12?
No Node.js 12.0.0
, 100% do ES2019 é suportado. Se você souber que está direcionando essa versão ou mais recente, a configuração ideal será semelhante a esta:
"module": "commonjs"
O Node.js está a caminho de adicionar os ES-Modules, mas por enquanto teremos que ficar com o CommonJS.
"target": "es2019"
Isso informa ao TypeScript que não há problema em gerar a sintaxe JavaScript com os recursos do ES2019. Na prática, isso significa que, por exemplo, ele produzirá propriedades de descanso / propagação do objeto e async / aguardará a sintaxe em vez de incorporar um polyfill.
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
Isso informa ao TypeScript que não há problema em usar funções e propriedades introduzidas no ES2019 ou anterior. Na prática, isso significa que você pode usar, por exemplo, String.prototype.trimStart
e Array.prototype.flat
.
Além do ES2019, o Node.js 12 também suporta BigInt
e matchAll
do ES2020, portanto, incluímos as definições adicionais do ES2020.
A configuração completa seria assim:
{
"compilerOptions": {
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
"module": "commonjs",
"target": "es2019"
}
}
Se você estiver direcionando o Node.js 12.9.0
ou mais recente , pode simplesmente especificar "lib": ["es2020"]
como essa versão suporta todas as novas funções e propriedades introduzidas no ES2020. No entanto, ele não suporta a nova sintaxe JavaScript , portanto você ainda precisa permanecer "target": "es2019"
.
A configuração completa seria assim:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
Se você estiver executando o Node.js 14, poderá ver minha resposta semelhante para o Node.js 14 aqui
Se você estiver executando o Node.js 10, poderá ver minha resposta semelhante para o Node.js 10 aqui
Se você estiver executando o Node.js 8, poderá ver minha resposta semelhante para o Node.js 8 aqui
"target"
afetam"lib"
de alguma forma, se"lib"
for deixado vazio na configuração? Se eu tiver apenas o"target": "es2020"
que é"lib"
padrão? Isso sempre foi uma fonte de mistério para mim.