Bagaimana saya bisa mengkonfigurasi Visual Studio Code untuk mengkompilasi file naskah di simpan?
Saya melihat itu mungkin untuk mengkonfigurasi tugas untuk membangun file dalam fokus menggunakan ${file}
argumen. Tapi saya ingin ini dilakukan ketika file disimpan.
typescript
visual-studio-code
Powell Quiring
sumber
sumber
tsc <filename> --watch
terminalJawaban:
Pembaruan Mei 2018:
Mulai Mei 2018 Anda tidak perlu lagi membuat
tsconfig.json
secara manual atau mengonfigurasi pelari tugas.tsc --init
di folder proyek Anda untuk membuattsconfig.json
file (jika Anda belum memilikinya).tsc: watch - tsconfig.json
.Anda dapat memiliki beberapa
tsconfig.json
file di ruang kerja Anda dan menjalankan beberapa kompilasi sekaligus jika Anda mau (mis. Frontend dan backend secara terpisah).Jawaban asli:
Anda dapat melakukan ini dengan perintah Bangun:
Buat sederhana
tsconfig.json
dengan"watch": true
(ini akan menginstruksikan kompiler untuk menonton semua file yang dikompilasi):Perhatikan bahwa
files
array dihilangkan, secara default semua*.ts
file di semua subdirektori akan dikompilasi. Anda dapat memberikan parameter lain atau perubahantarget
/out
, hanya memastikan bahwawatch
diatur untuktrue
.Konfigurasikan tugas Anda ( Ctrl+Shift+P->
Configure Task Runner
):Sekarang tekan Ctrl+Shift+Buntuk membangun proyek. Anda akan melihat output kompiler di jendela output ( Ctrl+Shift+U).
Kompiler akan mengkompilasi file secara otomatis saat disimpan. Untuk menghentikan kompilasi, tekan Ctrl+P->
> Tasks: Terminate Running Task
Saya telah membuat templat proyek khusus untuk jawaban ini:
typescript-node-basic
sumber
configure task
: VSCode akan secara otomatis mendeteksi bahwa adatsconfig.json
dan meminta dialog tempat Anda dapat memilih salah satutsc: build - tsconfig.json
atautsc: watch - tsconfig.json
. Pilih yang terakhir dan VSCode menghasilkantasks.json
file (jika tidak ada sebelumnya) dan menambahkan konfigurasi yang tepat untuk Anda.Jika Anda ingin menghindari penggunaan
CTRL
+SHIFT
+B
dan sebaliknya ingin ini terjadi kapan pun Anda menyimpan file, Anda dapat mengikat perintah ke jalan pintas yang sama dengan tindakan simpan:Ini berlaku di keybindings.json Anda - (menuju ke ini menggunakan File -> Preferences -> Shortcut Keyboard).
sumber
when
kondisi `editorLangId
adalah impor.Jika menekan Ctrl+ Shift+B sepertinya banyak usaha, Anda dapat mengaktifkan "Simpan Otomatis" (File> Simpan Otomatis) dan gunakan NodeJS untuk menonton semua file di proyek Anda, dan jalankan TSC secara otomatis.
Buka prompt perintah Node.JS, ubah direktori ke folder root proyek Anda dan ketik berikut ini;
Dan hei presto, setiap kali VS Code otomatis menyimpan file, TSC akan mengkompilasi ulang.
Teknik ini disebutkan dalam posting blog;
http://www.typescriptguy.com/getting-started/angularjs-typescript/
Gulir ke bawah untuk "Kompilasi saat menyimpan"
sumber
Tulis Ekstensi
Sekarang vscode dapat diperpanjang, dimungkinkan untuk terhubung ke acara save via ekstensi. Tinjauan umum ekstensi penulisan untuk VSCode dapat ditemukan di sini: https://code.visualstudio.com/docs/extensions/overview
Berikut adalah contoh sederhana yang hanya memanggil
echo $filepath
dan menampilkan stdout dalam dialog pesan:(Juga dirujuk pada pertanyaan SO ini: https://stackoverflow.com/a/33843805/20489 )
Ekstensi VSCode yang ada
Jika Anda hanya ingin menginstal ekstensi yang ada, berikut ini yang saya tulis tersedia di galeri VSCode: https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave
Kode sumber tersedia di sini: https://github.com/emeraldwalk/vscode-runonsave/blob/master/src/extension.ts
sumber
Saya telah berjuang keras untuk mendapatkan perilaku yang saya inginkan. Ini adalah cara termudah dan terbaik untuk mendapatkan file TypeScript untuk dikompilasi pada save, untuk konfigurasi yang saya inginkan, hanya file INI (file yang disimpan). Ini adalah task.json dan keybindings.json.
sumber
{ "version": "0.1.0", "command": "tsc", "isShellCommand": true, "args": ["--module","amd","--target","ES5","${file}"], "showOutput": "silent", "problemMatcher": "$tsc" }
keybingings:{ "key": "cmd+s", "command": "workbench.action.tasks.build", "when":"editorTextFocus && editorLangId == 'typescript'" }
Alih-alih membangun satu file dan mengikat Ctrl + S untuk memicu build itu, saya akan merekomendasikan untuk memulai tsc dalam mode menonton menggunakan file task.json berikut:
Ini sekali akan membangun seluruh proyek dan kemudian membangun kembali file yang disimpan terlepas dari bagaimana mereka disimpan (Ctrl + S, simpan otomatis, ...)
sumber
Diperbarui
Di Anda
tsconfig.json
jika masalah masih ada, lakukan salah satu dari yang berikut:
Mulai ulang editor Anda atau Ubah rute apa pun, kembalikan, dan simpan aplikasi. Itu akan mulai mengkompilasi. yaitu
sumber
Saya menerapkan kompilasi pada save dengan tugas teguk menggunakan tegukan-naskah dan membangun incremental. Ini memungkinkan Anda mengontrol kompilasi apa pun yang Anda inginkan. Perhatikan variabel tsServerProject saya, dalam proyek nyata saya, saya juga punya tsClientProject karena saya ingin mengkompilasi kode klien saya tanpa modul yang ditentukan. Seperti yang saya tahu Anda tidak dapat melakukannya dengan kode vs.
sumber
Pilih Preferensi -> Pengaturan Workspace dan tambahkan kode berikut, Jika Anda memiliki Hot reload diaktifkan, maka perubahan segera tercermin di browser
sumber
Status terkini dari masalah ini:
https://github.com/Microsoft/vscode/issues/7015
sumber
Saya dapat mengatakan dengan versi terbaru dari TypeScript 1.8.X dan 1.0 dari kode Visual Studio, teknik yang saya tunjukkan sudah usang. Cukup gunakan tsconfig.json di tingkat root proyek Anda dan semua bekerja secara otomatis untuk memeriksa sintaksis. Kemudian gunakan tsc -w pada baris perintah untuk menonton / mengkompilasi ulang secara otomatis. Ini akan membaca file tsconfig.json yang sama untuk opsi dan konfigurasi kompilasi ts.
sumber
Cara yang sangat sederhana untuk melakukan kompilasi otomatis saat save adalah dengan mengetik yang berikut ini di terminal:
tsc main --watch
dimana
main.ts
nama file kamuCatatan, ini hanya akan berjalan selama terminal ini terbuka, tetapi ini adalah solusi yang sangat sederhana yang dapat dijalankan saat Anda sedang mengedit program.
sumber
tsc -w
juga berfungsi untuk semua file naskah dalam proyekAnda perlu menambah batas jam tangan untuk memperbaiki masalah kompilasi ulang pada save, Buka terminal dan masukkan dua perintah ini:
Untuk membuat perubahan terus-menerus bahkan setelah restart, jalankan perintah ini juga:
sumber
mencoba metode di atas tetapi saya berhenti kompilasi otomatis ketika merasa seperti itu, karena file maksimum untuk menonton telah melampaui batas.
jalankan
cat /proc/sys/fs/inotify/max_user_watches
perintah.jika itu menunjukkan jumlah file yang lebih sedikit termasuk node_modules kemudian buka file
/etc/sysctl.conf
di root privilege dan appendfs.inotify.max_user_watches=524288
ke dalam file dan simpanjalankan lagi perintah cat untuk melihat hasilnya. Itu akan berhasil! semoga!
sumber
Saya menggunakan tugas otomatis yang dijalankan pada folder (harus bekerja VSCode> = 1.30) dalam .vscode / task.json
Jika ini masih tidak berfungsi pada folder proyek buka coba Ctrl + shift + P dan Tugas: Kelola Tugas Otomatis di Folder dan pilih "Izinkan Tugas Otomatis dalam folder" pada folder proyek utama atau menjalankan folder.
sumber