Rumah >hujung hadapan web >tutorial js >Cara Lulus Parameter Barisan Perintah ke Tugas Teluk
mata teras
Kesederhanaan Gulp.js adalah salah satu ciri yang paling menarik, yang membolehkan pemaju menulis fungsi tugas dalamgulpfile.js
Walaupun tugas Gulp biasanya tidak memerlukan parameter, parameter boleh berguna dalam beberapa kes. Sebagai contoh, lulus kelayakan FTP sebagai parameter dapat meningkatkan keselamatan dan mencegah maklumat sensitif keras. process.argv
gulpfile.js
Walaupun tugas Gulp tidak selalu memerlukan parameter menerima, ia sangat berguna dalam beberapa kes. Kod parameter parameter boleh digunakan dalam mana-mana proses baris arahan Node.js, dan modul komander menyediakan ciri-ciri yang lebih berkuasa untuk projek bukan Gulp. kesederhanaan Gulp adalah salah satu ciri yang paling menarik. Anda boleh menulis fungsi tugas dalam
:
gulpfile.js
<code class="language-javascript">gulp.task('doSomething', () => { // 执行某些操作 });</code>untuk melaksanakan tugas dari baris arahan. Tugas boleh menjadi mudah atau kompleks seperti yang anda suka, dan boleh mengandungi subtask selanjutnya.
gulp doSomething
(di mana
sama dengan<code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>)
option3
Parameter ini akan diserahkan kepada aplikasi Gulp itu sendiri, bukan tugas anda. Gulp tidak memahami nilai -nilai ini, jadi mereka tidak tersedia dalam true
dan tidak boleh diperiksa atau digunakan dalam fungsi tugas anda.
Adakah tugas Gulp memerlukan parameter? gulpfile.js
. Sebagai contoh, anda boleh menyemak sama ada nilai ditetapkan kepada pengeluaran atau serupa pada pelayan langsung. Tetapan ini kemudiannya boleh digunakan untuk menentukan sama ada untuk mengecilkan fail sumber JavaScript semasa tugas sedang berjalan, contohnya:
NODE_ENV
Anda kini boleh menetapkan
<code class="language-javascript">// 这是开发版本吗? const devBuild = ((process.env.NODE_ENV || 'development').trim().toLowerCase() === 'development'); // Gulp 插件 const stripdebug = require('gulp-strip-debug'); // 删除调试代码 const uglify = require('gulp-uglify'); // 压缩 // 构建 JavaScript gulp.task('js', () => { let jsbuild = gulp.src('src/js/*') .pipe(some-plugin1()) .pipe(some-plugin2()); // 生产服务器任务 if (!devBuild) { jsbuild = jsbuild .pipe(stripdebug()) .pipe(uglify()); } return jsbuild.pipe(gulp.dest('build/js/')); });</code>pada tingkap sebelum menjalankan tugas
. Ia kemudian memadam pernyataan gulp js
dan export NODE_ENV=production
sebelum memampatkan fail JavaScript. NODE_ENV=production
console.log
Akhirnya, jika anda mahu tugas melakukan tindakan yang sedikit berbeza, anda boleh membuat tugas baru. Tugas boleh dihubungkan bersama untuk dijalankan mengikut urutan seperti yang diperlukan, contohnya: debugger
<code class="language-javascript">gulp.task('doSomething', () => { // 执行某些操作 });</code>
RUN gulp doSomething1
akan melaksanakan kedua -dua tugas dalam rangka, kerana gulp doSomething2
ditakrifkan sebagai kebergantungan dalam array pilihan selepas nama tugas. doSomething1
anda mungkin menjadi pilihan baris arahan yang sah dalam versi Gulp seterusnya dengan akibat buruk. --option1
1.
gulpfile.js
<code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>
Terdapat beberapa masalah dengan kaedah ini:
Host FTP, ID Pengguna, Kata Laluan dan Laluan Dikodkan ke dalam fail. Jika kod itu disimpan dalam repositori GitHub awam dan boleh dilihat, diklonkan, dan dikendalikan oleh sesiapa sahaja, ia boleh menyebabkan masalah keselamatan.
gulp deploy
Jika kelayakan berubah, anda mesti mengemas kini secara manual gulpfile.js
Bayangkan tugas kompleks yang melibatkan berpuluh -puluh plugin. Jika tidak praktikal untuk memisahkannya ke dalam beberapa subtasks, ia boleh menjadi sukar untuk mengedit
secara langsung untuk menambah pilihan konfigurasi sebelum menjalankan tugas.
gulpfile.js
bagaimana lulus parameter ke tugas gulp.js anda
dalam
node.js mengembalikan array yang mengandungi proses, skrip, dan semua parameter baris arahan. Sebagai contoh,
process.argv
Arahan ini boleh dihuraikan dalam gulp task1 --a 123 --b "my string" --c
. Kod berikut mencipta objek bernama
<code class="language-javascript">// 这是开发版本吗? const devBuild = ((process.env.NODE_ENV || 'development').trim().toLowerCase() === 'development'); // Gulp 插件 const stripdebug = require('gulp-strip-debug'); // 删除调试代码 const uglify = require('gulp-uglify'); // 压缩 // 构建 JavaScript gulp.task('js', () => { let jsbuild = gulp.src('src/js/*') .pipe(some-plugin1()) .pipe(some-plugin2()); // 生产服务器任务 if (!devBuild) { jsbuild = jsbuild .pipe(stripdebug()) .pipe(uglify()); } return jsbuild.pipe(gulp.dest('build/js/')); });</code>
gulpfile.js
Fungsi ini gelung melalui array arg
. Apabila ia menemui nilai bermula dengan satu atau lebih sengkang, ia mewujudkan nilai bernama baru dalam objek
<code class="language-javascript">gulp.task('doSomething1', () => { return gulp.src('src/*') .pipe(some-plugin1()) .pipe(gulp.dest('build/')); }); // 首先运行 doSomething1 gulp.task('doSomething2', ['doSomething1'], () => { // 执行其他操作 return gulp.src('src/*') .pipe(some-plugin2()) .pipe(gulp.dest('build/')); });</code>. Apabila ia menemui nilai tanpa dash, ia menetapkan nilai bernama sebelumnya (jika tersedia) ke rentetan.
Apabila kita menjalankan gulp task1 --a 123 --b "my string" --c
, objek arg
ditetapkan ke:
<code class="language-javascript">gulp.task('doSomething', () => { // 执行某些操作 });</code>Oleh itu, kita boleh menyemak dan menggunakan nilai -nilai ini seperti yang diperlukan.
Katakan
ditetapkan di bahagian atas arg
, kita boleh menulis semula tugas penyebaran FTP kami supaya kami dapat lulus: gulpfile.js
--user
parameter --u
--password
parameter --p
<code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>penyebaran hanya berlaku apabila kita menjalankan tugas dengan kelayakan FTP yang sesuai, contohnya:
<code class="language-javascript">// 这是开发版本吗? const devBuild = ((process.env.NODE_ENV || 'development').trim().toLowerCase() === 'development'); // Gulp 插件 const stripdebug = require('gulp-strip-debug'); // 删除调试代码 const uglify = require('gulp-uglify'); // 压缩 // 构建 JavaScript gulp.task('js', () => { let jsbuild = gulp.src('src/js/*') .pipe(some-plugin1()) .pipe(some-plugin2()); // 生产服务器任务 if (!devBuild) { jsbuild = jsbuild .pipe(stripdebug()) .pipe(uglify()); } return jsbuild.pipe(gulp.dest('build/js/')); });</code>Ringkasan
Parameter parsing kod boleh digunakan dalam mana -mana proses baris perintah Node.js. Walau bagaimanapun, jika anda memerlukannya dalam projek bukan Gulp, modul komander menyediakan ciri-ciri yang lebih berkuasa.
Saya harap anda dapati ini berguna. Sudah tentu, hanya kerana anda boleh lulus parameter untuk tugas -tugas Gulp tidak bermakna anda
harus berbuat demikian! Jika anda membuat kes -kes yang lebih baik untuk pendekatan ini, beritahu saya dalam komen.
Artikel ini dikaji semula oleh Tim Severien. Terima kasih kepada semua pengulas rakan sebaya untuk mendapatkan kandungan SitePoint dengan sebaik -baiknya!
soalan yang sering ditanya mengenai parameter lulus ke Tugas Gulp (FAQ). process.argv
process.argv
Bolehkah saya menggunakan pakej untuk mengendalikan parameter baris arahan di Gulp?
yargs.argv
Bagaimana menggunakan bendera dalam tugas -tugas tong?
atau yargs atau minimist. gulp build --production
Ya, anda boleh lulus pelbagai parameter untuk tugas -tugas Gulp dari baris arahan. Parameter ini ditambah kepada array process.argv
mengikut urutan yang diluluskan. Anda boleh mengakses parameter ini dalam tugas Teluk dengan mengindeks array process.argv
.
boleh menggunakan parameter baris perintah dalam tugas -tugas Gulp dengan mengakses array process.argv
atau pakej seperti YARGS atau Minimist. Anda boleh menggunakan parameter ini untuk mengawal tingkah laku tugas Gulp. Sebagai contoh, anda boleh menggunakan bendera "pengeluaran" untuk memampatkan kod dalam tugas membina.
Ya, anda boleh menggunakan pembolehubah persekitaran dalam tugas -tugas Gulp. Pembolehubah ini boleh diakses melalui objek process.env
. Ini berguna jika anda ingin lulus maklumat sensitif seperti kekunci API untuk tugas -tugas Gulp tanpa mendedahkannya dalam parameter baris arahan.
.on('error')
boleh digunakan untuk mengendalikan kesilapan dalam tugas -tugas gulp. Kaedah ini mengambil fungsi panggil balik yang akan dipanggil apabila ralat berlaku. Dalam fungsi panggil balik ini, anda boleh log kesilapan dan menamatkan tugas untuk mengelakkan Gulp daripada terhempas.
Ya, anda boleh menjalankan pelbagai tugas Gulp dalam rangka menggunakan kaedah gulp.series()
. Kaedah ini mengambil pelbagai nama tugas dan menjalankannya dalam urutan yang ditetapkan.
Ya, anda boleh menjalankan pelbagai tugas selari dengan menggunakan kaedah gulp.parallel()
. Kaedah ini mengambil pelbagai nama tugas dan menjalankan semua tugas pada masa yang sama.
Tugas Gulp lalai boleh ditakrifkan menggunakan kaedah gulp.task()
menggunakan "lalai" sebagai nama tugas. Tugas ini dijalankan apabila anda melaksanakan perintah Teluk tanpa nama tugas. Anda boleh menggunakan tugas ini untuk menjalankan satu siri tugas lain secara lalai.
Atas ialah kandungan terperinci Cara Lulus Parameter Barisan Perintah ke Tugas Teluk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!