Ich habe eine gulpfile.js, die perfekt durchläuft, wenn Sie gulp
in die Befehlszeile eingeben.
Der gulp
bash-Befehl ruft nur die angegebene js-Datei in package.json >> bin >> gulp
des global installierten Gaps auf.
Jetzt möchte ich das gulpfile ohne den global installierten gulp ausführen, indem ich einfach node gulpfile.js
eingebe, was offensichtlich ausfällt und bereits oft erwähnt wurde, obwohl gulp lokal installiert wurde und am Anfang des gulpfile.js
erforderlich
Die Verwendung von gulp ohne das cli-Tool würde es sehr leicht machen, gulp als Teil anderer npm-Plugins zu verwenden.
Hinweis:
Das Anfordern einer weiteren Datei gulpfile.js funktioniert von einer ursprünglichen Datei gulpfile.js, wenn diese ursprüngliche Datei gulpfile.js mit dem Werkzeug gulp cli gestartet wurde.
Frage:
Was ist der beste Weg, um Schlupf auszuführen/zu fordern, ohne das globale Werkzeug cli gulp zu benötigen (// edit: oder lokal verlinken)? z.B. Sie können es einfach von einer anderen js-Datei anfordern, wenn gulp nur eine lokal installierte Abhängigkeit ist. (Mit anderen Worten, gulp programmgesteuert von JS aus starten, ohne dass ein CLI-Eingriff erfolgt)
In package.json
"scripts": {
"gulp": "gulp"
},
Und dann bietet dieser Befehl npm run gulp
Außerdem bietet npm die Möglichkeit, zusätzliche Parameter an Ihre Befehle zu übergeben. Dies gilt nur für npm> = 2.0
Update: Ohne Bin Link
Sie können die Datei node_modules/.bin/gulp
oder node_modules/gulp/bin/gulp.js
überprüfen, um zu erfahren, wie Sie gulp starten können (Zeile 129 ist interessant).
Ich denke das sollte funktionieren:
var gulp = require('gulp');
gulp.task('default', function() {
console.log('do something');
});
gulp.start.apply(gulp, ['default']);
Wenn Sie es lokal installieren (npm install --save-dev gulp
), können Sie es einfach ausführen, indem Sie ./node_modules/.bin/gulp all
aufrufen.
Oder Sie können ein npm
-Skript definieren und es mit npm run gulp
ausführen.
indem Sie dies zu package.json
hinzufügen
"scripts": {
"gulp": "gulp"
}
Fügen Sie in Ihrer package.json Folgendes hinzu:
"scripts": {
"gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>"
}
und von der Befehlszeile aus ausführen, indem Sie npm run gulp eingeben.
Dadurch entfällt die Abhängigkeit von der globalen Installation von Schluck
Ich denke, die direkteste Antwort lautet:
node ./node_modules/gulp/bin/gulp.js
Ja, das Hinzufügen zu Ihren npm-Skripten funktioniert zwar, aber dies hilft nicht bei automatisierten Builds, bei denen Sie versuchen, einen Gulp-Task für vorhandenen Code aus einem Repo auszuführen, und Sie können package.json nicht einfach ändern.
Im Allgemeinen ist die Antwort von Sander Visser wahrscheinlich die "beste", aber dies ist der niedrigste Anruf, der überall implementiert werden kann.
Inzwischen ist npm> = 5.2.0. Sie können es mit 'npx' machen:
npx gulp
Es führt die Binärdateien in ./node_modules/.bin aus
Es hat übrigens die Möglichkeit, nicht installierte Tools auszuführen, die nur temporär installiert, ausgeführt und anschließend gelöscht werden.
Überprüfen Sie die Post von Kat Marchán: Einführung in npx: ein npm-Paketläufer