Mengkonfigurasi Watch

Kompilator mendukung konfigurasi cara mengawasi berkas dan direktori menggunakan kompilator flags di TypeScript 3.8+, dan variabel environment.

Latar Belakang

Implementasi --watch dari compiter bergantung pada penggunaan fs.watch dan fs.watchFile yang disediakan oleh node, kedua metode ini memiliki kelebihan dan kekurangan.

fs.watch menggunakan berkas system event untuk memberi tahu perubahan dalam berkas/direktori. Tetapi ini bergantung pada OS dan notifikasi tidak sepenuhnya dapat diandalkan dan tidak berfungsi seperti yang diharapkan pada banyak OS. Juga mungkin ada batasan jumlah watch yang dapat dibuat, misalnya linux dan kami dapat melakukannya dengan cukup cepat dengan program yang menyertakan banyak berkas. Tetapi karena ini menggunakan berkas system event, tidak banyak siklus CPU yang terlibat. Kompilator biasanya menggunakan fs.watch untuk melihat direktori (misalnya. Direktori sumber disertakan oleh berkas konfigurasi, direktori di mana resolusi modul gagal, dll.) Ini dapat menangani ketepatan yang hilang dalam memberi tahu tentang perubahan. Tetapi memantau secara rekursif hanya didukung pada Windows dan OSX. Artinya kita membutuhkan sesuatu untuk menggantikan sifat rekursif di OS lain.

fs.watchFile menggunakan polling dan karenanya melibatkan siklus CPU. Tetapi ini adalah mekanisme yang paling andal untuk mendapatkan pembaruan status berkas/direktori. Kompilator biasanya menggunakan fs.watchFile untuk melihat berkas sumber, berkas konfigurasi dan berkas yang hilang (referensi berkas hilang) yang berarti penggunaan CPU bergantung pada jumlah berkas dalam program.

Konfigurasi berkas watching menggunakan tsconfig.json

{
// Beberapa opsi kompilator umumnya
"": "es2020",
"": "node"
// ...
},
// BARU: Opsi untuk memantau berkas/direktori
"watchOptions": {
// Gunakan native berkas system events untuk berkas dan direktori
"": "useFsEvents",
"": "useFsEvents",
// Dapatkan pembaruan berkas
// ketika terdapat update yang besar.
"": "dynamicPriority"
}
}

Anda dapat membacanya lebih lanjut di catatan rilis.

Konfigurasi berkas watching menggunakan variabel environment TSC_WATCHFILE

Opsi Deskripsi
PriorityPollingInterval Gunakan fs.watchFile tetapi gunakan interval polling yang berbeda untuk berkas sumber, berkas konfigurasi, dan berkas yang hilang
DynamicPriorityPolling Gunakan antrian dinamis di mana dalam berkas yang sering dimodifikasi akan memiliki interval yang lebih pendek dan berkas yang tidak diubah akan lebih jarang diperiksa
UseFsEvents Gunakan fs.watch untuk memanfaatkan system event berkas (tetapi mungkin tidak akurat pada OS yang berbeda) untuk mendapatkan pemberitahuan terhadap perubahan/pembuatan/penghapusan berkas. Perhatikan bahwa beberapa OS misalnya. linux memiliki batasan jumlah pengamatan dan jika gagal melakukan pengamatan menggunakan fs.watch, maka pengamatan akan dilakukan dengan fs.watchFile
UseFsEventsWithFallbackDynamicPolling Opsi ini mirip dengan UseFsEvents kecuali jika gagal memantau menggunakan fs.watch, pengawasan dilakukan melalui antrean polling dinamis (seperti dijelaskan dalam DynamicPriorityPolling)
UseFsEventsOnParentDirectory Opsi ini mengawasi direktori induk dari berkas dengan fs.watch (menggunakan berkas system event) sehingga menjadi rendah pada CPU tetapi dengan keakuratan yang rendah.
standar (tanpa menspesifikkan nilainya) Jika variabel environment TSC_NONPOLLING_WATCHER di-set ke true, maka akan mengawasi direktori induk dari berkas (seperti UseFsEventsOnParentDirectory). Jika tidak, akan menggunakan fs.watchFile dengan 250ms sebagai waktu tunggu untuk berkas apa pun.

Mengonfigurasi pengawasan direktori menggunakan variabel environment TSC_WATCHDIRECTORY

Pemantauan direktori pada platform yang tidak mendukung pemantau direktori rekursif secara native di node, maka akan menggunakan opsi yang berbeda, yang dipilih olehTSC_WATCHDIRECTORY. Perlu dicatat bahwa, platform yang mendukung pemantauan direktori secara rekursif (misalnya Windows), nilai dari variabel environment tersebut akan diabaikan.

Opsi Deskripsi
RecursiveDirectoryUsingFsWatchFile Gunakan fs.watchFile untuk mengawasi direktori dan direktori anak yang merupakan polling watch (menggunakan siklus CPU)
RecursiveDirectoryUsingDynamicPriorityPolling Gunakan antrian polling dinamis untuk mengumpulkan perubahan pada direktori dan sub direktori.
default (tidak ada nilai yang ditentukan) Gunakan fs.watch untuk memantau direktoru dan sub direktorinya

The TypeScript docs are an open source project. Help us improve these pages by sending a Pull Request

Contributors to this page:
SNSheetal Nandi  (52)
BDPBurhanudin Dwi Prakoso  (8)
OTOrta Therox  (1)
00xflotus  (1)
PKPhilip Kirkbride  (1)
3+

Last updated: 26 Apr 2024