gulp - 如何使用 Gulp 缩小并复制修改后的文件?

标签 gulp

我在 /app/js 中有 JS 文件,并希望在修改时缩小并复制到 /dist/js/min 。我目前在我的 gulpfile 中有这个:

gulp.task('minifyJs', function () {
    gulp.src('app/js/*.js')
        .pipe(uglify().on('error', function (e) {
            console.log(e);
        }))
        .pipe(rename({
                         suffix: '.min'
                     }))
        .pipe(gulp.dest('/dist/js/min'))
    ;
});

这在默认任务中:

gulp.watch('app/js/*.js', ['lint', 'minifyJs']);

这里的问题是,每当修改单个 JS 文件时,目录中的所有 JS 文件都会被缩小和复制,这确实会减慢速度。

如何才能只缩小和复制修改过的文件?例如,有没有办法将修改后的文件名传递给任务,并将其用作任务中的src()参数?

最佳答案

您可以使用gulp-changed这样只有更改过的文件才会被处理。

var changed = require('gulp-changed');

gulp.task('minifyJs', function () {
  gulp.src('app/js/*.js')
    .pipe(changed('/dist/js/min'))
    .pipe(uglify().on('error', function (e) {
        console.log(e);
    }))
    .pipe(rename({
                  suffix: '.min'
    }))
    .pipe(gulp.dest('/dist/js/min'));
});

关于gulp - 如何使用 Gulp 缩小并复制修改后的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34473464/

相关文章:

javascript - Typescript 编译器因奇怪错误而失败

angular - Gulp 中的 TypeScript 编译器说它找不到 @angular 模块但编译正常

node.js - 使用 Laravel Mix 合并多个文件

Gulp:将文件复制到以特定字符串开头的多个文件夹

gulp - 如何使用 Gulp 运行多个服务器?

Gulp:如何自动替换 html 中的缩小文件?

css - 编译不同 SCSS 文件的 Gulp 组合任务

css - .css 文件拒绝更改

javascript - 吞下目的地 : warn if 2 tasks try to write to the same destination

javascript - 如何在 Gulp 任务中为多个管道制作外观