unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
TS Config

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 tipe any 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 direktori src 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 jika allowJs 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.

« Regex Identifier
Vendoring »