Heim >Web-Frontend >js-Tutorial >So übergeben Sie die Befehlszeilenparameter an Schlupfaufgaben
Kernpunkte
gulpfile.js
process.argv
analysiert werden, um ein Objekt zu erstellen, das Parameterwerte enthält. gulpfile.js
Die Einfachheit von
Gulp ist eine der attraktivsten Merkmale. Sie können Aufgabenfunktionen in: gulpfile.js
schreiben
<code class="language-javascript">gulp.task('doSomething', () => { // 执行某些操作 });</code>Verwenden Sie dann
, um die Aufgabe aus der Befehlszeile auszuführen. Aufgaben können so einfach oder komplex sein, wie Sie möchten, und können weitere Unteraufgaben enthalten. gulp doSomething
<code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>(wobei
gleich option3
) true
gleich
nicht verfügbar und können nicht in Ihren Aufgabenfunktionen überprüft oder verwendet werden. gulpfile.js
Sie können auch Umgebungsvariablen analysieren, z. B.
. Sie können beispielsweise überprüfen, ob der Wert auf der Produktion oder ähnlich auf dem Live -Server eingestellt ist. Diese Einstellung kann dann verwendet werden, um festzustellen, ob die JavaScript -Quelldatei während der Ausführung der Aufgabe verkleinert werden soll, z. B. NODE_ENV
<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>Sie können jetzt
auf Linux/Mac oder gulp js
unter Windows einstellen, bevor Sie die export NODE_ENV=production
-Angabe ausführen. Anschließend löscht es die Anweisungen NODE_ENV=production
und console.log
, bevor die JavaScript -Datei komprimiert wird. debugger
<code class="language-javascript">gulp.task('doSomething', () => { // 执行某些操作 });</code>
run gulp doSomething1
Die erste Aufgabe wird ausgeführt. Durch Ausführen von gulp doSomething2
wird beide Aufgaben in der Reihenfolge ausführen, da doSomething1
nach dem Aufgabenamen als Abhängigkeit in einem optionalen Array definiert ist.
Vermeiden Sie die Verwendung von Parametern, wenn es bessere Alternativen gibt. Ihr Parameter --option1
kann in der nächsten Gulp-Version mit nachteiligen Folgen zu einer gültigen Befehlszeilenoption werden.
Mit anderen Worten, es gibt immer einige besondere Umstände ...
vermeiden. Betrachten Sie die folgende Aufgabe, die das Vinyl-Fftp-Plugin verwendet, um Dateien auf dem Server bereitzustellen: gulpfile.js
<code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>(authentisch, FTP ist keine gute Möglichkeit zum Bereitstellen, aber viele Entwickler verwenden es immer noch, und es ist möglicherweise die einzige Option für einige Hosts.)
Es gibt mehrere Probleme mit dieser Methode:
gulp deploy
gulpfile.js
3
Stellen Sie sich eine komplexe Aufgabe vor, die Dutzende von Plugins umfasst. Wenn es nicht praktikabel ist, es in mehrere Unteraufgaben aufzuteilen, kann es schwierig werden, Sie können sich mehr besondere Umstände vorstellen (Kommentare sind willkommen!) gulpfile.js
Die Eigenschaft
in
process.argv
gulp task1 --a 123 --b "my string" --c
Dieses Array kann in
<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>mit Parameterwerten:
gulpfile.js
arg
Diese Funktion schießt durch das Array
<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>-Objekt, der auf
festgelegt ist. Wenn es auf einen Wert ohne Dash trifft, wird der vorherige benannte Wert (falls verfügbar) auf die Zeichenfolge festgelegt. process.argv
Wenn wir gulp task1 --a 123 --b "my string" --c
ausführen, wird das arg
-Objekt auf:
<code class="language-javascript">gulp.task('doSomething', () => { // 执行某些操作 });</code>
Daher können wir diese Werte nach Bedarf überprüfen und verwenden.
Angenommen, arg
wird oben in gulpfile.js
eingestellt. Wir können unsere FTP -Bereitstellungsaufgabe umschreiben, damit wir übergeben können:
--user
oder --u
Parameter --password
oder --p
Parameter <code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>
Bereitstellung tritt nur auf, wenn wir die Aufgabe mit den entsprechenden FTP -Anmeldeinformationen ausführen, zum Beispiel:
<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>
Wie wir gesehen haben, können Parameter mit einer kleinen Menge benutzerdefinierter Code an Schluckaufgaben übergeben werden. Während Ihre Aufgabe normalerweise keine empfangenen Parameter erfordert, sehen wir, dass dies in einigen Fällen sehr nützlich ist. Dies ist definitiv eine gute Technik, die Sie in Ihrer Toolbox beherrschen sollten.
Parameter -Parsing -Code kann in jedem Befehlszeilungsvorgang von Node.js verwendet werden. Wenn Sie es jedoch in einem Nicht-Gulp-Projekt benötigen, bietet das Commander-Modul leistungsfähigere Funktionen.
Ich hoffe, Sie finden das nützlich. Nur weil Sie Parameter an Gulp -Aufgaben übergeben können, heißt das nicht, dass Sie dies tun sollten! Wenn Sie sich für diesen Ansatz mehr gute Anwendungsfälle einfallen lassen, lassen Sie es mich in den Kommentaren wissen.
Dieser Artikel wurde von Tim Severien überprüft. Vielen Dank an alle SitePoint -Peer -Rezensenten, die SidePoint -Inhalte für den Besten erhalten haben!
häufig gestellte Fragen zum Übergeben von Parametern an Gulp -Aufgaben (FAQ) -Array indizieren. process.argv
process.argv
Kann ich Pakete verwenden, um Befehlszeilenparameter in Gulp zu verarbeiten?
yargs.argv
Wie verwendet ich Flags in Schluckaufgaben?
oder Yargs oder Minimist eingestellt ist. gulp build --production
Ja, Sie können mehrere Parameter über die Befehlszeile übergeben. Diese Parameter werden dem process.argv
-Array in der Reihenfolge hinzugefügt, in der sie übergeben werden. Sie können auf diese Parameter in der Gulp -Aufgabe zugreifen, indem Sie das process.argv
-Array indizieren.
kann Befehlszeilenparameter in Gulp -Aufgaben verwenden, indem Sie auf process.argv
Arrays oder Pakete wie Yargs oder Minimist zugreifen. Sie können diese Parameter verwenden, um das Verhalten von Gulp -Aufgaben zu steuern. Sie können beispielsweise das Flag "Produktion" verwenden, um den Code in einer Build -Aufgabe zu komprimieren.
Ja, Sie können Umgebungsvariablen in Gulp -Aufgaben verwenden. Diese Variablen können über das process.env
-Objekt zugegriffen werden. Dies ist nützlich, wenn Sie sensible Informationen wie API -Schlüssel an Schlupfaufgaben übergeben möchten, ohne sie in Befehlszeilenparametern zu enthüllen.
mit dem .on('error')
kann verwendet werden, um Fehler in Gulp -Aufgaben zu verarbeiten. Diese Methode nimmt eine Rückruffunktion auf, die aufgerufen wird, wenn ein Fehler auftritt. In dieser Rückruffunktion können Sie Fehler protokollieren und die Aufgabe beenden, um zu verhindern, dass Gulp zum Absturz ist.
Ja, Sie können mehrere Gulp -Aufgaben mit der gulp.series()
-Methode ausführen. Diese Methode nimmt eine Reihe von Aufgabennamen an und führt sie in der definierten Reihenfolge aus.
Ja, Sie können mehrere Gulp -Aufgaben parallel mit der gulp.parallel()
-Methode ausführen. Diese Methode nimmt eine Reihe von Aufgabennamen an und führt alle gleichzeitig alle Aufgaben aus.
Die Standard -Gulp -Aufgabe kann mithilfe der gulp.task()
-Methode mit "Standard" als Aufgabename definiert werden. Diese Aufgabe wird ausgeführt, wenn Sie den Gulp -Befehl ohne Aufgabennamen ausführen. Sie können diese Aufgabe verwenden, um standardmäßig eine Reihe anderer Aufgaben auszuführen.
Das obige ist der detaillierte Inhalt vonSo übergeben Sie die Befehlszeilenparameter an Schlupfaufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!