Rumah >hujung hadapan web >tutorial js >Cara Lulus Parameter Barisan Perintah ke Tugas Teluk

Cara Lulus Parameter Barisan Perintah ke Tugas Teluk

Christopher Nolan
Christopher Nolanasal
2025-02-17 10:32:10657semak imbas

How to Pass Command Line Parameters to Gulp Tasks

mata teras

Kesederhanaan Gulp.js adalah salah satu ciri yang paling menarik, yang membolehkan pemaju menulis fungsi tugas dalam
    dan melaksanakannya dari baris arahan. Walau bagaimanapun, ia tidak menyokong parameter baris arahan lulus untuk tugas untuk digunakan.
  • gulpfile.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.
  • Harta
  • dalam
  • node.js mengembalikan array yang mengandungi proses, skrip, dan semua parameter baris arahan. Arahan ini boleh dihuraikan dalam
  • untuk membuat objek yang mengandungi nilai parameter. 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.
  • Saya suka gulp.js sangat banyak, dan tinjauan baru-baru ini menunjukkan bahawa hampir 44% pemaju front-end menggunakan tugas Gulp.

kesederhanaan Gulp adalah salah satu ciri yang paling menarik. Anda boleh menulis fungsi tugas dalam

:

gulpfile.js

kemudian gunakan
<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.

Walau bagaimanapun, adalah mustahil untuk lulus parameter baris arahan yang boleh digunakan dalam tugas ini, seperti: 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

Ia biasanya tidak diperlukan - jika tidak, fungsi parameter lulus kepada tugas akan ditambah tahun lalu! Tugas Gulp ditulis dalam JavaScript, jadi anda boleh menetapkan nilai lalai dalam kod anda.

Anda juga boleh menganalisis pembolehubah persekitaran, seperti

. 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

pada linux/mac, atau
<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 Tugas pertama akan dilakukan. Running gulp doSomething1 akan melaksanakan kedua -dua tugas dalam rangka, kerana gulp doSomething2 ditakrifkan sebagai kebergantungan dalam array pilihan selepas nama tugas. doSomething1

Sekiranya kita mempertimbangkan parameter?

Elakkan menggunakan parameter apabila terdapat alternatif yang lebih baik. Parameter

anda mungkin menjadi pilihan baris arahan yang sah dalam versi Gulp seterusnya dengan akibat buruk. --option1

dengan kata lain, selalu ada beberapa keadaan istimewa ...

1.

anda harus secara amnya mengelakkan kelayakan kod keras seperti ID dan kata laluan ke

. Pertimbangkan tugas berikut yang menggunakan plugin vinil-FTP untuk menggunakan fail ke pelayan:

gulpfile.js

(Authentic, FTP bukan cara yang baik untuk digunakan, tetapi banyak pemaju masih menggunakannya, dan mungkin satu -satunya pilihan pada beberapa tuan rumah.)
<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.
  1. Mana -mana pemaju boleh berjalan dari mana -mana peranti pada bila -bila masa
  2. . Ini tidak sesuai untuk pasukan yang lebih besar yang ingin mengawal masa penempatan.
  3. gulp deploy Jika kelayakan berubah, anda mesti mengemas kini secara manual
  4. untuk memastikan tugas penempatan masih sah.
  5. gulpfile.js
  6. 2.
Gulp boleh digunakan untuk tujuan selain daripada tugas -tugas laman web biasa. Sebagai contoh, anda mungkin mempunyai beberapa tugas yang sama untuk membersihkan folder, membuat pangkalan data, pemindahan fail, dan banyak lagi. Kandungan keras seperti pangkalan data atau nama folder akan mengurangkan kepraktisan tugas-tugas ini.

3

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.

anda mungkin memikirkan lebih banyak keadaan istimewa (komen dialu -alukan!)

gulpfile.js bagaimana lulus parameter ke tugas gulp.js anda

Harta

dalam

node.js mengembalikan array yang mengandungi proses, skrip, dan semua parameter baris arahan. Sebagai contoh,

mengembalikan array berikut (nilai mungkin berbeza -beza bergantung kepada sistem operasi dan tetapan anda):

process.argv Arahan ini boleh dihuraikan dalam gulp task1 --a 123 --b "my string" --c. Kod berikut mencipta objek bernama

dengan nilai parameter:
<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

, yang ditetapkan kepada
<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

    id pengguna sebagai
  • atau --user parameter --u
  • kata laluan sebagai
  • atau --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

Seperti yang telah kita lihat, menggunakan sedikit kod tersuai, parameter boleh diserahkan kepada tugas -tugas Gulp. Walaupun tugas anda biasanya tidak memerlukan parameter menerima, kami melihat bahawa ia sangat berguna dalam beberapa kes. Ini pastinya teknik yang baik yang harus anda menguasai di dalam kotak alat anda.

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)

Bagaimana untuk lulus parameter ke tugas menelan dari baris arahan?

array boleh digunakan untuk lulus parameter untuk tugas -tugas Gulp dari baris arahan. Arahan ini mengandungi parameter baris arahan yang diluluskan apabila memulakan proses Node.js. Dua elemen pertama dari array ini adalah jalan ke Node.js yang boleh dilaksanakan dan jalan ke fail Gulp. Mana -mana parameter lain akan ditambah ke array ini bermula dari kedudukan ketiga. Anda boleh mengakses parameter ini dalam tugas Teluk dengan mengindeks array

. process.argv process.argv Bolehkah saya menggunakan pakej untuk mengendalikan parameter baris arahan di Gulp?

Ya, anda boleh menggunakan pakej seperti Yargs atau Minimist untuk mengendalikan parameter baris arahan di Gulp. Pakej-pakej ini menghuraikan parameter baris perintah ke dalam format yang lebih mudah digunakan, menjadikannya lebih mudah digunakan dalam tugas-tugas Gulp. Sebagai contoh, jika anda menggunakan YARGS, anda boleh mengakses sifat objek

sebagai parameter baris arahan.

yargs.argv Bagaimana menggunakan bendera dalam tugas -tugas tong?

Bendera boleh diluluskan dari baris arahan ke tugas Teluk dengan mendahului nama bendera. Sebagai contoh, anda boleh lulus bendera "pengeluaran" ke tugas Gulp seperti berikut:

. Dalam tugas anda, anda boleh menyemak sama ada bendera ini ditetapkan menggunakan pakej seperti

atau yargs atau minimist. gulp build --production

Bolehkah saya lulus pelbagai parameter ke tugas menelan?

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.

Bagaimana menggunakan parameter baris arahan dalam tugas -tugas Gulp?

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.

Bolehkah saya menggunakan pembolehubah persekitaran dalam tugas -tugas Gulp?

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.

Bagaimana menangani kesilapan dalam tugas -tugas Teluk?

.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.

Bolehkah saya menjalankan pelbagai tugas Gulp dalam rangka?

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.

Bolehkah saya menjalankan pelbagai tugas selari secara selari?

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.

Bagaimana untuk menentukan tugas lalai lalai?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn