我通常通过npm运行gulp,例如在我的package.json中
"scripts": {
"test": "gulp test",
"minify": "gulp minify"
}
Run Code Online (Sandbox Code Playgroud)
然后我就可以运行命令了
npm run minify
Run Code Online (Sandbox Code Playgroud)
哪个没关系,但每次我在gulpfile中都有新任务时,我需要将它们添加到scripts部分下的package.json中,有没有更好的方法呢?
原因:我只在全局安装npm,path
所以所有其他模块都不会污染我的path
,所以我需要通过npm
脚本运行它们
Aus*_*ray 30
我有没有得到你的待遇:我继续为你做了一个简单的npm模块来处理这个问题.
以下是它的要点:
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;
});
Run Code Online (Sandbox Code Playgroud)
在完整的源代码做这样的东西写的package.json回用相同的缩进和东西.
所以是的,继续: npm install --save-dev gulp-npm-script-sync
坚持下去你的gulpfile:
var gulp = require('gulp');
var sync = require('gulp-npm-script-sync');
// your gulpfile contents
sync(gulp);
Run Code Online (Sandbox Code Playgroud)
每次使用新任务更新gulpfile时,它都会更新package.json.
你甚至可以把它扔进一个gulp任务:
gulp.task('sync', function () {
sync(gulp);
}
Run Code Online (Sandbox Code Playgroud)
Rom*_*iko 26
Brian Brennan提出了一个很棒的建议:添加
./node_modules/.bin
到你的$PATH
变量中.然后,只要您位于项目的顶级目录中,就可以运行本地安装的实用程序.
资料来源:保持清洁.
无需全局安装软件包即可轻松调用它.请记住,上面的路径应该是前置的.
或者,从2.0.0版开始,npm
提供了将额外参数传递给运行命令的功能.这些参数将简单地附加到您的脚本命令.
在您的情况下,您的以下脚本package.json
:
"scripts": {
"gulp": "gulp"
},
Run Code Online (Sandbox Code Playgroud)
可以被调用为npm run gulp -- test
,或npm run gulp -- minify
等