Biasanya kita dapat menjalankan tugas tegukan dari konsol melalui sesuatu seperti gulp mytask
. Apakah ada cara lain yang dapat saya berikan pada parameter untuk menelan tugas? Jika memungkinkan, tolong tunjukkan contoh bagaimana hal itu dapat dilakukan.
194
Jawaban:
Ini adalah fitur program yang tidak dapat bertahan tanpa. Anda dapat mencoba yarg .
Anda bisa menggunakannya seperti ini:
Dalam kode, misalnya:
Untuk pengertian Anda:
Semoga Anda bisa mengambilnya dari sini.
Ada plugin lain yang bisa Anda gunakan, minimalis. Ada pos lain di mana ada contoh yang bagus untuk yarg dan minimalis: ( Apakah mungkin untuk mengirimkan bendera kepada Gulp agar menjalankan tugas dengan cara yang berbeda? )
sumber
(argv.production === undefined) ? false : true;
setara denganargv.production !== undefined
.Jika Anda ingin menghindari menambahkan dependensi tambahan, saya menemukan simpul
process.argv
berguna:Jadi yang berikut ini:
harus menampilkan:
Jika Anda yakin bahwa parameter yang diinginkan ada di posisi yang tepat, maka flag tidak diperlukan. ** Cukup gunakan (dalam hal ini):
TETAPI: karena pilihannya mungkin tidak ditetapkan, atau mungkin berada di posisi yang berbeda, saya merasa bahwa ide yang lebih baik adalah sesuatu seperti:
Dengan begitu, Anda dapat menangani variasi dalam banyak opsi, seperti:
Edit ** : benar untuk skrip simpul, tetapi tegukan menafsirkan apa pun tanpa "-" pengarah sebagai nama tugas lain. Jadi menggunakan
gulp mytask 123
akan gagal karena tegukan tidak dapat menemukan tugas yang disebut '123'.sumber
gulp myTask --production
hasilprocess.argv
sama dengan[pathToNode, pathToGulp, 'myTask', '--production']
Melewati parameter ke tegukan dapat berarti beberapa hal:
Berikut adalah pendekatan melewatkan parameter dari tegukan utama ke tugas tegukan. Dengan memindahkan tugas yang membutuhkan parameter ke modulnya sendiri dan membungkusnya dalam suatu fungsi (agar suatu parameter dapat dilewati) .:
Ini bisa berguna jika Anda memiliki banyak tugas menelan dan ingin memberikan mereka beberapa konfigurasi lingkungan yang berguna. Saya tidak yakin apakah itu bisa berfungsi antara satu tugas dan lainnya.
sumber
Ada resep tegukan resmi untuk ini menggunakan minimalis .
https://github.com/gulpjs/gulp/blob/master/docs/recipes/pass-arguments-from-cli.md
Dasar-dasar menggunakan minimalis untuk memisahkan argumen cli dan menggabungkannya dengan opsi yang diketahui:
Yang akan mem-parsing sesuatu seperti
Info lebih lengkap dalam resep.
sumber
Jika Anda ingin menggunakan params lingkungan dan utilitas lain seperti log, Anda dapat menggunakan gulp-util
Memperbarui
gulp-util sekarang sudah tidak digunakan lagi. Anda bisa menggunakan minimalis .
sumber
Jawaban @ Ethan akan sepenuhnya bekerja. Dari pengalaman saya, cara simpul lebih banyak menggunakan variabel lingkungan. Ini adalah cara standar untuk mengkonfigurasi program yang digunakan pada platform hosting (mis. Heroku atau Dokku).
Untuk melewatkan parameter dari baris perintah, lakukan seperti ini:
Pengembangan:
gulp dev
Produksi:
NODE_ENV=production gulp dev
Sintaksnya berbeda, tetapi sangat Unix, dan itu kompatibel dengan Heroku, Dokku, dll.
Anda dapat mengakses variabel dalam kode Anda di
process.env.NODE_ENV
MYAPP=something_else gulp dev
akan ditetapkan
process.env.MYAPP === 'something_else'
Jawaban ini mungkin memberi Anda beberapa ide lain.
sumber
Ini contoh saya bagaimana saya menggunakannya. Untuk tugas css / kurang. Dapat diaplikasikan untuk semua.
sumber
Berikut cara lain tanpa modul tambahan:
Saya perlu menebak lingkungan dari nama tugas, saya punya tugas 'dev' dan tugas 'prod'.
Ketika saya menjalankannya
gulp prod
harus diatur ke lingkungan prod. Ketika saya menjalankangulp dev
atau apa pun itu harus diatur ke lingkungan dev.Untuk itu saya baru memeriksa nama tugas yang berjalan:
sumber
Jika Anda menggunakan tegukan dengan yarg, perhatikan hal berikut:
Jika Anda memiliki tugas 'pelanggan' dan tidak ingin menggunakan yarg, build di Parameter memeriksa perintah yang diperlukan:
.command("customer <place> [language]","Create a customer directory")
sebut dengan:yargs akan selalu melemparkan kesalahan, bahwa tidak ada cukup perintah yang ditugaskan untuk panggilan, bahkan jika Anda punya !! -
Cobalah dan tambahkan hanya satu digit ke perintah (untuk membuatnya tidak sama dengan nama tugas gulp) ... dan itu akan bekerja:
.command("customer1 <place> [language]","Create a customer directory")
Ini disebabkan oleh tegukan yang tampaknya memicu tugas, sebelum yarg dapat memeriksa Parameter yang diperlukan ini. Butuh waktu beberapa jam untuk mencari tahu hal ini.
Semoga ini bisa membantu Anda ..
sumber
Saya tahu saya terlambat untuk menjawab pertanyaan ini, tetapi saya ingin menambahkan sesuatu ke jawaban @Ethan, jawaban tertinggi yang diterima dan diterima.
Kita bisa menggunakan
yargs
untuk mendapatkan parameter baris perintah dan dengan itu kita juga dapat menambahkan alias kita sendiri untuk beberapa parameter seperti follow.Silakan merujuk tautan ini untuk detail lebih lanjut. https://github.com/yargs/yargs/blob/HEAD/docs/api.md
Berikut ini adalah penggunaan alias sesuai yang diberikan dalam dokumentasi
yargs
. Kami juga dapat menemukan lebih banyakyargs
fungsi di sana dan dapat membuat pengalaman melewati baris perintah lebih baik.sumber
Hanya memuatnya ke objek baru pada proses ..
process.gulp = {}
dan minta tugas melihat di sana.sumber