扫码关注官方订阅号
我在gulp定义了sass和js等task,然后又定义了一个watch的task。现在想在watch的时候获得改动文件的path,然后将path传递给前面的sass和js对应的task,这样就可以实现只编译我改动的文件。
走同样的路,发现不同的人生
推荐 gulp-changed 插件
更多内容 https://github.com/Platform-CUF/use-gulp
另一种方式,按照楼主所说(下面代码我没有试过,只是一个想法)
gulp.watch('js/**/*.js', function(event) { console.log('File ' + event.path + ' was ' + event.type + ', running tasks...'); uglify(event.path); }); function uglify(path){ gulp.src(path) .pipe(uglify()) .pipe(gulp.dest('./dest')); }
var filePath = '';gulp.watch('js/*/.js', function(event) { console.log('event.path + ' : ' + event.type); filePath = event.path;});通过一个外部变量filePath,在下次要用时传给要用的地方,行不?
用插件
npm install minimist
var argv = require('minimist')(process.argv.slice(2)); console.dir(argv);
CLI
gulp taskname --a value
你可以尝试用插件 gulp-foal 来运行一个带参数的自定义 task
不是来自命令行的参数
'use strict'; var gulp = require('gulp'); var clean = require('gulp-clean'); var foal = require('gulp-foal'); //使用 foal.task(...) 来定义一个 foal 任务 foal.task('clean_some', function(cleanPath) { //为了顺序执行 foal 任务,请别省略 return 语句 return gulp.src(cleanPath) .pipe(clean()); }); gulp.task('default', function(cb) { //使用 foal.run(...) 来执行带参数的 foal 任务 foal.run(clean_some('test_path'), cb); });
gulp会将第二个词作为一个新的任务进行执行,而且没有grunt用冒号:作为分隔符的设定,所以只能借助第三方的插件或模块来实现。
推荐我写的process.args模块:
$ npm install --save-dev process.args
这个模块以-v, --name=xxx, ---globalParam=xxx的形式传入参数,例如:
$ gulp add --type=chart -h preview ---name=new-component
-h是缩略词,可以通过配置设定自己的缩略词map,--type=chart就是key=>value,---name=xxx是对之前的所有task传入同一个参数,也就是说add, preview都能接收这个参数。
-h
--type=chart
---name=xxx
在gulpfile.js中这么用:
var args = require('process.args')(); gulp.task('add',function(){ var arg = args.add; console.log(arg.type, arg.h, arg.name) });
具体的文档可以看我github上的README。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
推荐 gulp-changed 插件
更多内容 https://github.com/Platform-CUF/use-gulp
另一种方式,按照楼主所说(下面代码我没有试过,只是一个想法)
var filePath = '';
gulp.watch('js/*/.js', function(event) {
console.log('event.path + ' : ' + event.type);
filePath = event.path;
});
通过一个外部变量filePath,在下次要用时传给要用的地方,行不?
用插件
CLI
你可以尝试用插件 gulp-foal 来运行一个带参数的自定义 task
不是来自命令行的参数
gulp会将第二个词作为一个新的任务进行执行,而且没有grunt用冒号:作为分隔符的设定,所以只能借助第三方的插件或模块来实现。
推荐我写的process.args模块:
这个模块以-v, --name=xxx, ---globalParam=xxx的形式传入参数,例如:
-h是缩略词,可以通过配置设定自己的缩略词map,--type=chart就是key=>value,---name=xxx是对之前的所有task传入同一个参数,也就是说add, preview都能接收这个参数。在gulpfile.js中这么用:
具体的文档可以看我github上的README。