Gulp:如何观看多个文件并仅为更改文件执行任务?

时间:2015-10-24 14:49:50

标签: gulp gulp-watch

我想做这件事:

我有一个包含许多js文件的文件夹。当我保存其中一个时,我想将缩小的文件保存在其他文件夹中。

我得到了部分内容,因为我的脚本会看到很多文件,当我更改文件时,所有文件都会被复制并缩小到目标文件夹。

我最近发现gulp.run已不再使用了。

如果有人可以帮助我,我会很高兴。

我是这样尝试的:

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var uglify = require('gulp-uglify');
var watch = require('gulp-watch');

var files_dev = "./_sys/js/private/*.js";
var path_prod = "./_sys/js/public/";

gulp.task('dist-file', function(file) {
    gulp.src(file)
    .pipe(uglify())
    .pipe(gulp.dest(path_prod));
});

gulp.task('default', function() {
    gulp.watch(files_dev).on("change", function(file) {
        gulp.run('dist-file');
    });

1 个答案:

答案 0 :(得分:3)

dist-file doen不需要是一个gulp任务,你可以把它作为一个可以传递文件或glob来处理的函数。此外,观看是gulp的一部分,所以你不应该需要gulp-watch。

var jshint = require('gulp-jshint');
var uglify = require('gulp-uglify');

var files_dev = "./_sys/js/private/*.js";
var path_prod = "./_sys/js/public/";

function uglifyFile (file) {
    gulp.src([file])
        .pipe(uglify())
        .pipe(gulp.dest(path_prod));
}

gulp.task('watch-test', function() {
    gulp.watch(files_dev).on("change", function (event) {
        uglifyFile(event.path);
    });
});