如何在gulp任务中只排除.min.js文件,同时保持在同一目录中

How do I exclude only .min.js files in gulp task, while staying in same directory?

本文关键字:js 任务 gulp 排除 min 文件      更新时间:2023-09-26

我正试图为我的前端工作建立一个构建系统,尽管我遇到了一个问题,它一遍又一遍地循环处理文件。这是我的js处理的一个问题,因为我不确定如何排除只是文件与。min作为后缀。

任务如下

return gulp.src(["!dev/js/*.min.js", "dev/js/*.js"])
        .pipe(plumber())
        .pipe(browserify())
        .pipe(smaps.init())
            .pipe(uglyify({preserveComments: "license"}))
        .pipe(smaps.write())
        .pipe(rename({suffix: ".min"}))
        .pipe(gulp.dest(output_dir));

虽然我发现它仍然针对。min.js文件,因为它们也被视为。js文件。我已经弄乱了这些通配符的几种不同配置,但我总是以创建example.min.js然后example.min.min.js然后example.min.min.min.js等任务循环结束。

那么,我如何处理不包含。min前缀的文件呢?

你可以使用否定模式来排除。min.js文件。

gulp.src(['dev/js/*.js', '!dev/js/*.min.js'])

如果你想在一个字符串中做,你可以使用:

gulp.src(["dev/js/!(*.min)*.js"])

在您的gulp命令中

const
    gulpIgnore = require( 'gulp-ignore' ),
    uglify = require( 'gulp-uglify' ),
    jshint = require( 'gulp-jshint' ),
    condition = './**/*.min.js';
gulp.task( 'task', function() {
    gulp.src( './**/*.js' )
        .pipe( jshint() )
        .pipe( gulpIgnore.exclude( condition ) )
        .pipe( uglify() )
        .pipe( gulp.dest( './dist/' ) );
} );

condition中指定您的目录。../为后退,/dir为前进