【问题标题】:How do I exclude only .min.js files in gulp task, while staying in same directory?如何在 gulp 任务中仅排除 .min.js 文件,同时保留在同一目录中?
【发布时间】:2017-02-10 10:55:41
【问题描述】:

我正在尝试为我的前端工作建立一个构建系统,尽管我遇到了一个问题,它会一遍又一遍地循环处理文件。这是我的 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 前缀的文件呢?

【问题讨论】:

  • 试着把./放在开头看看

标签: javascript node.js gulp wildcard


【解决方案1】:

您可以使用negated patterns 排除 .min.js 文件。

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

【讨论】:

  • 是的,这是我一直在使用的,但它会产生重复的开始和结束。这是截图:i.imgur.com/XR5oh1R.png
  • 糟糕!,事实证明我没有在我的监视语句中忽略该文件......:/现在一切正常,无论如何感谢这个答案,让我查看了其他调用的语句任务。因此,每次更改 js 文件时,都会更改 js min 文件,这也调用了执行任务的 watch 函数。不太清楚为什么它在这两个电话之后一遍又一遍地循环,但现在一切都修复了。
【解决方案2】:

如果您只想在一个字符串中执行此操作,您可以使用:

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

【讨论】:

    【解决方案3】:

    在您的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 前进

    【讨论】:

    • 我试过这个,但似乎没有用。我会用你的例子重试。 编辑好的,测试了它,结果发现它是别的东西,请参阅对 Himani 的回答的评论。
    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多