Apa tsconfig
pengaturan TypeScript optimal untuk menghasilkan kode yang akan dijalankan pada Node.js 12?
sumber
Apa tsconfig
pengaturan TypeScript optimal untuk menghasilkan kode yang akan dijalankan pada Node.js 12?
Pada Node.js 12.0.0
, 100% dari ES2019 didukung. Jika Anda tahu bahwa Anda menargetkan versi itu atau yang lebih baru, konfigurasi optimal akan terlihat seperti ini:
"module": "commonjs"
Node.js sedang menambahkan ES-Modul, tetapi untuk saat ini kita harus tetap menggunakan CommonJS.
"target": "es2019"
Ini memberitahu TypeScript bahwa tidak apa-apa untuk menghasilkan sintaks JavaScript dengan fitur dari ES2019. Dalam prakteknya, ini berarti bahwa ia akan mis: output objek rest / spread properties & async / menunggu sintaks alih-alih menyematkan polyfill.
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
Ini memberi tahu TypeScript bahwa tidak masalah menggunakan fungsi dan properti yang diperkenalkan pada ES2019 atau sebelumnya. Dalam praktiknya, ini berarti Anda bisa menggunakan eg String.prototype.trimStart
dan Array.prototype.flat
.
Selain ES2019, Node.js 12 juga mendukung BigInt
& matchAll
dari ES2020, karenanya kami menyertakan definisi tambahan dari ES2020.
Konfigurasi lengkapnya adalah:
{
"compilerOptions": {
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
"module": "commonjs",
"target": "es2019"
}
}
Jika Anda menargetkan Node.js 12.9.0
atau yang lebih baru , Anda cukup menentukan "lib": ["es2020"]
karena versi itu mendukung semua fungsi dan properti baru yang diperkenalkan di ES2020. Itu tidak mendukung sintaks JavaScript baru , jadi Anda masih harus tetap aktif "target": "es2019"
.
Konfigurasi lengkapnya adalah:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
Jika Anda menjalankan Node.js 14, Anda dapat melihat jawaban saya yang serupa untuk Node.js 14 di sini
Jika Anda menjalankan Node.js 10, Anda dapat melihat jawaban saya yang serupa untuk Node.js 10 di sini
Jika Anda menjalankan Node.js 8, Anda dapat melihat jawaban saya yang serupa untuk Node.js 8 di sini
"target"
memengaruhi"lib"
dengan cara apa pun jika"lib"
dibiarkan kosong di konfigurasi? Jika saya hanya memiliki"target": "es2020"
apa"lib"
ke default? Ini selalu menjadi sumber misteri bagi saya.