Untuk membuat task VS Code menunggu proses build selesai sebelum menjalankan perintah lain di macOS, tentukan build sebagai dependensi dan atur "dependsOrder": "sequence" pada task yang bergantung padanya. Secara default, VS Code menjalankan beberapa dependensi secara paralel, jadi mencantumkan build terlebih dahulu saja tidak cukup. Contoh di bawah ini menjalankan npm run build hingga selesai sebelum npm test.
Menentukan build dan task dependen
Di proyek Anda, buka Command Palette dengan ⇧⌘P, jalankan Tasks: Configure Task, atau gunakan Terminal > Configure Tasks. Buat atau edit .vscode/tasks.json di ruang kerja. Pertahankan task yang sudah ada jika masih Anda butuhkan, dan tambahkan task seperti ini di dalam array tasks:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build project",
"type": "shell",
"command": "npm run build",
"problemMatcher": []
},
{
"label": "Test after build",
"dependsOn": ["Build project"],
"dependsOrder": "sequence"
}
]
}
Task dependen tidak memiliki perintahnya sendiri: tugasnya adalah menjalankan dependensi terlebih dahulu. Untuk membuatnya melakukan tindakan lanjutan, tambahkan perintah dan tipe task shell, misalnya "type": "shell" dan "command": "npm test", ke Test after build. Jalankan task induk tersebut melalui Terminal > Run Task atau perintah Tasks: Run Task di Command Palette. Dokumentasi VS Code menyatakan bahwa dependsOn menyusun task, dependensi berjalan secara paralel secara default, dan dependsOrder: "sequence" menjalankannya sesuai urutan yang tercantum. Integrate with External Tools via Tasks
Contoh ini mengasumsikan bahwa package.json proyek mendefinisikan skrip build dan test yang berfungsi dan npm dapat diakses oleh VS Code. Ganti perintah dengan perintah build dan tindak lanjut yang sebenarnya untuk proyek Anda. Di macOS, task shell VS Code berjalan melalui shell; jika Anda menulis perintah sebagai satu string, sertakan tanda kutip atau karakter escape yang dibutuhkan oleh shell tersebut. Khususnya, gunakan tanda kutip pada jalur yang mengandung spasi, seperti "command": "./scripts/build.sh 'Assets Folder'". Integrate with External Tools via Tasks
Apa arti “menunggu” untuk proses build
Untuk build satu kali (one-shot) biasa, urutan tersebut membuat dependensi selesai terlebih dahulu sebelum memulai dependensi berikutnya atau task induk. Ini berfungsi ketika perintah build keluar (exit) setelah selesai. Jika Anda mencantumkan beberapa dependensi, urutkan sesuai urutan kemunculannya di dependsOn; tanpa dependsOrder, VS Code dapat memulainya secara bersamaan.
Task pengawas (watch task) berperilaku berbeda karena dimaksudkan untuk terus berjalan. VS Code mendokumentasikan bahwa background task dalam rantai dependensi berurutan membutuhkan problem matcher yang mendeteksi kapan task tersebut “selesai”. Untuk watcher, itu berarti mendefinisikan matcher yang mengenali status siapnya; jika tidak, VS Code tidak dapat menentukan kapan ia siap untuk beralih. Build satu kali biasanya tidak boleh menggunakan mode watch atau isBackground. Integrate with External Tools via Tasks
Jalankan dan diagnosis masalah umum
Simpan tasks.json, lalu jalankan Test after build dari Terminal > Run Task. Baca output terminal terintegrasi untuk mengonfirmasi bahwa perintah sebenarnya telah berjalan dan selesai. Jika task induk tidak ada atau build tidak dimulai lebih dulu, periksa poin-poin berikut:
- Label di
dependsOnsama persis denganlabeltask build—termasuk spasi dan huruf besar/kecil. - Kedua definisi task berada di dalam array
tasksyang sama, dan file tersebut menggunakan task versi2.0.0. dependsOrderdiatur pada task induk, berdampingan dengandependsOn.- Perintah shell berfungsi dari folder ruang kerja, atau atur
options.cwdjika skrip build berada di dalam subfolder. - Jika build adalah watcher, konfigurasikan background problem matcher yang memberi sinyal kesiapan; hanya menyetel
isBackgroundtidak memberi tahu VS Code kapan task tersebut siap.
VS Code mendokumentasikan konfigurasi task khusus platform, termasuk bagian osx, tetapi mekanisme pengurutan dependensi tetap sama: dependsOn dan dependsOrder. Anda tidak memerlukan perintah shell “wait” buatan sendiri untuk rantai task ini. Batasan yang didokumentasikan adalah bahwa background task yang berjalan lama memerlukan problem matcher untuk melaporkan kesiapannya. Appendix: Schema for tasks.json
Sumber
- Integrate with External Tools via Tasks — Visual Studio Code
- Appendix — Visual Studio Code