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 tipeany
secara 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 direktorisrc
dan 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.js
bersama dengan file.ts
."checkJs"
: Memeriksa tipe dalam file JavaScript jikaallowJs
diaktifkan.
resolveJsonModule
#
Field ini memungkinkan Anda untuk mengimpor file .json
sebagai modul di TypeScript.
Contoh:
{
"compilerOptions": {
"resolveJsonModule": true
}
}
"resolveJsonModule"
: Mengizinkan impor file.json
dengan 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.tsbuildinfo
yang 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.