如果管道中的文件是javascript,则Gulp任务应用uglify

时间:2015-03-14 03:38:21

标签: javascript pipe task gulp

我想检查管道中的文件是否为.js(可能是.map.html,...)。如果是这样的话,请在将其复制到正确的路径之前进行处理。

ʕ•؈•)我尝试过这样的事情(不起作用):

gulpfile.js

gulp.src(current + '/**/*', {base: current})
.pipe($.tap(function (file) {
    if (path.extname(file.path) === '.js') {
        return gulp.src(file.path)
        .pipe($.uglify());
    }
}))
.pipe(gulp.dest(destination + '/' + name));

但就目前来说,uglify似乎什么都不做......

有人知道如何做到这一点吗? (╥﹏╥)

2 个答案:

答案 0 :(得分:2)

如果您愿意使用插件,那么就有一个名为gulp-filter的插件可以满足您的要求。 https://www.npmjs.com/package/gulp-filter

它可能看起来像这样

var gulp = require('gulp');
var gulpFilter = require('gulp-filter');

gulp.task('default', function () {
    // create filter instance inside task function
    var jsfilter = gulpFilter('**/*.js', {restore: true});
    return gulp.src(current + '/**/*', {base: current})
        // filter a subset of the files 
        .pipe(jsFilter)
        // run them through a plugin 
        .pipe($.uglify())
        // bring back the previously filtered out files (optional) 
        .pipe(jsFilter.restore)
        .pipe(gulp.dest(destination + '/' + name));
});

答案 1 :(得分:0)

尝试使用gulp-filter

类似

var filter = require('gulp-filter');
var jsFilter = filter('**/*.js');

gulp.src('*/*')
.pipe(jsFilter)
.pipe(uglify)