web-dev-qa-db-fra.com

Utilisation de gulp sans global // edit: et sans lien vers le fichier bin js

J'ai un gulpfile.js qui fonctionne parfaitement lorsque vous tapez gulp dans la ligne de commande.

Toute la commande gulp bash fait en réalité appeler le fichier js spécifié dans package.json >> bin >> gulp du gulp installé globalement.

Maintenant, je veux exécuter le fichier gulp sans le gulp installé globalement en tapant simplement node gulpfile.js qui échoue évidemment et a déjà été mentionné assez souvent, bien que gulp soit installé localement et requis au début du gulpfile.js

L'utilisation de gulp sans l'outil cli permettrait très facilement d'utiliser gulp dans le cadre d'autres plugins npm.

Remarque:
Exiger un autre fichier gulpfile.js à partir d’un fichier gulpfile.js original lorsque ce fichier gulpfile.js original a été démarré via l’outil gulp cli.

Question:
Quel est le meilleur moyen d’exécuter/de requérir gulp sans avoir besoin de l’outil global cli gulp (// edit: ou de créer un lien vers celui-ci localement)? par exemple. pouvoir simplement le demander à un autre fichier js lorsque gulp n’est qu’une dépendance installée localement. (en d’autres termes, commencer à manger par programmation à partir de JS sans aucune intervention de la CLI)

16
philkunz

Dans package.json

"scripts": {
   "gulp": "gulp"  
},

Et puis cette commande npm run gulp En outre, npm offre la possibilité de transmettre des paramètres supplémentaires à vos commandes . C’est le cas uniquement pour npm> = 2.0.

Mise à jour: sans lien bin

Vous pouvez consulter le fichier node_modules/.bin/gulp ou node_modules/gulp/bin/gulp.js pour savoir comment démarrer gulp (la ligne 129 est intéressante) 

Je pense que cela devrait fonctionner:

var gulp = require('gulp');

gulp.task('default', function() {
    console.log('do something');
});

gulp.start.apply(gulp, ['default']);
34
Sander Visser

Lorsque vous l'installez localement (npm install --save-dev gulp), vous pouvez simplement l'exécuter en appelant ./node_modules/.bin/gulp all

Ou vous pouvez définir un script npm et l'exécuter avec npm run gulp

en ajoutant ceci à package.json

"scripts": {
  "gulp": "gulp"
}
8
t.niese

Dans votre package.json, ajoutez ce qui suit:

"scripts": {
  "gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>" 
}

et exécutez à partir de la ligne de commande en tapant npm run gulp.

Cela supprime la dépendance d'avoir gulp globalement installé

5
Megha Bisht

Je pense que la réponse la plus directe est la suivante:

node ./node_modules/gulp/bin/gulp.js

Oui, l'ajout à vos scripts npm fonctionne, mais cela n'aide pas dans des situations telles que les versions automatisées dans lesquelles vous essayez d'exécuter une tâche gulp pour du code existant à partir d'un référentiel et vous ne pouvez pas modifier facilement package.json.

En règle générale, la réponse de Sander Visser est probablement la "meilleure", mais il s'agit du plus bas niveau d'appel pouvant être mis en œuvre n'importe où.

1
Doug Lampe

En attendant, depuis npm> = 5.2.0. vous pouvez le faire avec 'npx':

npx gulp

Il exécute les fichiers binaires dans ./node_modules/.bin

À propos, il a la capacité d'exécuter des outils non installés qui ne sont que temporaires installés, exécutés puis supprimés.

Commander le message de Kat Marchán: Présentation de npx: un coureur de paquet npm

1
tweini