wake-up-neo.com

Verwenden von gulp ohne global gulp // edit: und ohne Verknüpfung mit der bin-js-Datei

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)

16
philkunz

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']);
34
Sander Visser

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"
}
8
t.niese

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

5
Megha Bisht

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.

1
Doug Lampe

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

1
tweini