Je lance généralement gulp via npm, par ex. dans mon package.json
"scripts": {
"test": "gulp test",
"minify": "gulp minify"
}
Ensuite, je peux exécuter une commande telle que
npm run minify
Ce qui est correct, mais chaque fois que j'ai de nouvelles tâches dans mon gulpfile, je dois les ajouter au package.json dans la section des scripts, y a-t-il une meilleure façon de le faire?
Reason: J'installe uniquement npm globalement sur mon path
pour que tous les autres modules ne polluent pas mon path
, donc je dois les exécuter via npm
scripts
Ai-je un régal pour vous: je suis allé de l'avant et vous ai fait un module npm simple pour gérer cela.
Voici l'essentiel:
var file = fs.readFileSync(config.path || 'package.json', 'utf-8');
var pkg = JSON.parse(file);
var tasks = gulp.tasks;
pkg.scripts = pkg.scripts || {};
Object.keys(tasks).forEach(function (t) {
pkg.scripts[t] = 'gulp '+tasks[t].name;
});
Le source complète fait des trucs comme réécrire le package.json avec la même indentation et les mêmes trucs.
Alors, allez-y: npm install --save-dev gulp-npm-script-sync
Collez ceci dans votre gulpfile:
var gulp = require('gulp');
var sync = require('gulp-npm-script-sync');
// your gulpfile contents
sync(gulp);
Chaque fois que vous mettez à jour votre gulpfile avec une nouvelle tâche, il mettra à jour votre package.json.
Vous pouvez même le jeter dans une tâche de gorgée:
gulp.task('sync', function () {
sync(gulp);
}
Brian Brennan a donné ne suggestion fantastique : ajouter
./node_modules/.bin
à votre$PATH
variable. Ensuite, vous pouvez exécuter les utilitaires installés localement tant que vous êtes dans le répertoire supérieur d'un projet.
Source: Garder propre .
Pas besoin d'installer un package globalement pour pouvoir l'invoquer facilement. N'oubliez pas que le chemin ci-dessus doit être ajouté.
Alternativement, depuis la version 2.0.0, npm
permet de transmettre des paramètres supplémentaires à nos commandes d'exécution. Ces arguments seront simplement ajoutés à votre commande de script.
Dans votre cas, le script suivant de votre package.json
:
"scripts": {
"gulp": "gulp"
},
peut être invoqué comme npm run gulp -- test
, ou npm run gulp -- minify
, etc.