Fork Me On Github
zodream 技术 2018-12-19

需求来源

Gulp 一般使用一个默认的任务,如果需要处理不同的文件就多建几个任务,但是这是一般的做法。

比如本站源码就分成多个模块,项目结构都一样,如果按一般的做法就是要建无数个任务,关键是项目是不断开发中的,不可能每次都新建,所以就想怎么自动切换处理不同文件夹。

解决方法

Gulp 调用不同的任务是通过 gulp task 这个调用task任务的,如果不存在task任务就会报错,那有没有可能 通过 gulp task 调用处理 task 这个文件夹呢?

1.首先获取 参数

var name = '';
if (process.argv && process.argv.length > 2) {
    name = process.argv[2]; // 这就获取到了参数
}

2.然后根据参数改变目标文件夹

gulp.src(name + '/*.css')

但是 gulp task 是会调用 task 任务的,那么可以

3.临时生成 task 任务

gulp.task(name || 'z', build);

name 可能为空,但不能生成一个空命名的任务

4.最终结果

var gulp = require('gulp'),
    minCss = require('gulp-clean-css'),
    name = '';
if (process.argv && process.argv.length > 2) {
    name = process.argv[2]; // 这就获取到了参数
}
function cssTask() {
    return gulp.src('src/' name + "/*.css")
        .pipe(minCss())
        .pipe(gulp.dest('dist/'));
}
exports.cssTask = cssTask;
var build = gulp.series(gulp.parallel(cssTask));
gulp.task(mo, build);
gulp.task('default', build);

测试 压缩 test 文件夹下的css

gulp test
点击查看全文
0 128 0