¿Cuál es la tsconfig
configuración óptima de TypeScript para generar código que se ejecutará en Node.js 12?
fuente
¿Cuál es la tsconfig
configuración óptima de TypeScript para generar código que se ejecutará en Node.js 12?
A partir de Node.js 12.0.0
, se admite el 100% de ES2019. Si sabe que está apuntando a esa versión o más nueva, la configuración óptima se vería así:
"module": "commonjs"
Node.js está en camino de agregar módulos ES, pero por ahora tendremos que seguir con CommonJS.
"target": "es2019"
Esto le dice a TypeScript que está bien generar sintaxis JavaScript con características de ES2019. En la práctica, esto significa que, por ejemplo, generará propiedades de descanso / dispersión de objetos y sintaxis asíncrona / espera en lugar de incrustar un polyfill.
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
Esto le dice a TypeScript que está bien usar funciones y propiedades introducidas en ES2019 o anteriores. En la práctica, esto significa que puede usar, por ejemplo, String.prototype.trimStart
y Array.prototype.flat
.
Además de ES2019, Node.js 12 también admite BigInt
y matchAll
desde ES2020, por lo tanto, incluimos las definiciones adicionales de ES2020.
La configuración completa sería:
{
"compilerOptions": {
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
"module": "commonjs",
"target": "es2019"
}
}
Si está apuntando a Node.js 12.9.0
o posterior , simplemente puede especificar "lib": ["es2020"]
que esa versión admite todas las nuevas funciones y propiedades introducidas en ES2020. Sin embargo, no es compatible con la nueva sintaxis de JavaScript , por lo que aún debe permanecer "target": "es2019"
.
La configuración completa sería:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
Si está ejecutando Node.js 14, puede ver mi respuesta similar para Node.js 14 aquí
Si está ejecutando Node.js 10, puede ver mi respuesta similar para Node.js 10 aquí
Si está ejecutando Node.js 8, puede ver mi respuesta similar para Node.js 8 aquí
"target"
afectará"lib"
de ninguna manera si"lib"
se deja vacía en la configuración? Si solo tengo"target": "es2020"
lo que hace"lib"
predeterminado? Esto siempre ha sido una fuente de misterio para mí.