TS Config #
File tsconfig.json adalah file konfigurasi yang digunakan oleh TypeScript compiler (tsc) untuk menentukan bagaimana proyek TypeScript harus dikompilasi. Berikut adalah berbagai field yang umum ditemui dalam tsconfig.json beserta penjelasannya:
compilerOptions
#
Bagian ini berisi pengaturan yang mengontrol perilaku TypeScript compiler. Di dalam compilerOptions, Anda dapat menentukan banyak opsi berbeda yang mengubah cara kode TypeScript Anda dikompilasi.
Contoh:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true,
"outDir": "./dist",
"rootDir": "./src",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"noImplicitAny": true,
"skipLibCheck": true
}
}
Field di dalam compilerOptions:
target: Menentukan versi ECMAScript yang akan digunakan untuk kode JavaScript hasil kompilasi (es5,es6,esnext, dll.).module: Menentukan sistem modul yang akan digunakan (commonjs,amd,esnext,umd, dll.).strict: Mengaktifkan mode ketat (strict mode) untuk memastikan pengecekan tipe yang lebih ketat di seluruh proyek.outDir: Menentukan direktori output di mana semua file hasil kompilasi akan disimpan.rootDir: Menentukan direktori root untuk semua file sumber TypeScript.esModuleInterop: Mengaktifkan interoperability (interop) antara modul ECMAScript dan modul CommonJS.forceConsistentCasingInFileNames: Memastikan penggunaan huruf besar/kecil yang konsisten dalam nama file.noImplicitAny: Mencegah penggunaan tipeanysecara implisit; jika tipe tidak didefinisikan, compiler akan mengeluarkan error.skipLibCheck: Mengabaikan pemeriksaan tipe pada file deklarasi (.d.ts) untuk mempercepat waktu kompilasi.
include
#
Field ini menentukan file atau direktori mana yang harus disertakan dalam kompilasi.
Contoh:
{
"include": ["src/**/*"]
}
"src/**/*": Ini menyertakan semua file TypeScript di dalam direktorisrcdan semua subdirektorinya.
exclude
#
Field ini menentukan file atau direktori mana yang harus dikecualikan dari kompilasi.
Contoh:
{
"exclude": ["node_modules", "dist"]
}
"node_modules"dan"dist": Direktori ini dikecualikan dari proses kompilasi untuk menghindari kompilasi ulang dependensi atau hasil kompilasi sebelumnya.
files
#
Field ini memungkinkan Anda untuk menentukan file-file spesifik yang akan dikompilasi, terlepas dari apakah mereka ada di dalam include atau tidak.
Contoh:
{
"files": ["src/index.ts", "src/app.ts"]
}
"files": Menyebutkan file yang akan disertakan dalam kompilasi. Hanya file yang disebutkan di sini yang akan dikompilasi.
extends
#
Field ini memungkinkan Anda untuk mewarisi pengaturan dari file tsconfig.json lain. Ini berguna untuk berbagi konfigurasi dasar di beberapa proyek.
Contoh:
{
"extends": "./base-tsconfig.json",
"compilerOptions": {
"outDir": "./dist"
}
}
"extends": Mengambil semua pengaturan dari file yang disebutkan dan dapat menimpa pengaturan tertentu jika diperlukan.
paths
#
Field ini digunakan untuk memetakan alias atau jalur ke modul yang dapat membantu dalam pengelolaan impor modul.
Contoh:
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@models/*": ["src/models/*"],
"@controllers/*": ["src/controllers/*"]
}
}
}
"baseUrl": Menentukan basis URL untuk semua jalur relatif di proyek."paths": Menentukan alias untuk direktori atau file untuk memudahkan impor.
typeRoots dan types
#
Field ini digunakan untuk menentukan lokasi file deklarasi tipe (.d.ts).
Contoh:
{
"compilerOptions": {
"typeRoots": ["./node_modules/@types"],
"types": ["node", "jest"]
}
}
"typeRoots": Menentukan direktori di mana TypeScript mencari file deklarasi tipe."types": Menentukan paket tipe mana yang harus disertakan dalam kompilasi. Jika Anda ingin menggunakan deklarasi tipe khusus, ini bisa berguna.
lib
#
Field ini memungkinkan Anda menentukan library yang ingin di-include di dalam kompilasi. Library ini merepresentasikan set API bawaan yang disediakan oleh browser atau runtime lainnya, seperti DOM, ES6, dan sebagainya.
Contoh:
{
"compilerOptions": {
"lib": ["es6", "dom"]
}
}
"lib": Menentukan kumpulan API yang akan tersedia selama kompilasi.
allowJs dan checkJs
#
Field ini memungkinkan Anda menggabungkan file JavaScript dalam proyek TypeScript dan memeriksa tipe dalam file JavaScript.
Contoh:
{
"compilerOptions": {
"allowJs": true,
"checkJs": true
}
}
"allowJs": Mengizinkan TypeScript untuk mengompilasi file.jsbersama dengan file.ts."checkJs": Memeriksa tipe dalam file JavaScript jikaallowJsdiaktifkan.
resolveJsonModule
#
Field ini memungkinkan Anda untuk mengimpor file .json sebagai modul di TypeScript.
Contoh:
{
"compilerOptions": {
"resolveJsonModule": true
}
}
"resolveJsonModule": Mengizinkan impor file.jsondengan tipe yang tepat dalam TypeScript.
baseUrl
#
Field ini digunakan untuk menentukan basis URL yang digunakan untuk menyelesaikan impor relatif.
Contoh:
{
"compilerOptions": {
"baseUrl": "./src"
}
}
"baseUrl": Semua jalur relatif akan diselesaikan dari direktori ini.
incremental
#
Field ini memungkinkan kompilasi yang lebih cepat dengan menyimpan cache status kompilasi dari kompilasi sebelumnya.
Contoh:
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "./build/.tsbuildinfo"
}
}
"incremental": Mengaktifkan kompilasi inkremental."tsBuildInfoFile": Menentukan lokasi file.tsbuildinfoyang digunakan oleh TypeScript untuk menyimpan informasi kompilasi sebelumnya.
noEmit
#
Field ini digunakan untuk mencegah TypeScript menghasilkan file .js setelah kompilasi, berguna jika Anda hanya ingin memeriksa tipe tanpa output file.
Contoh:
{
"compilerOptions": {
"noEmit": true
}
}
"noEmit": Mencegah TypeScript untuk menghasilkan output file apa pun selama kompilasi.
Kesimpulan #
Dengan memahami berbagai field dalam tsconfig.json, Anda dapat mengonfigurasi proyek TypeScript Anda dengan lebih tepat dan sesuai dengan kebutuhan proyek, sehingga menghasilkan kompilasi yang optimal dan efektif.