我的asp.net项目中有一个包含一些javascript文件的文件夹。在建立项目之前,他们被缩小并复制到" wwwroot"使用gulp的文件夹。它工作得很好,但是当我对任何javascript文件进行一些更改时,我必须重新启动整个项目(运行与建筑物相关的任务)或从" Task Runner Explorer"手动运行任务。
这需要一些时间,而且非常烦人。一旦我将任何javascript文件保存在此文件夹中,它是否可以运行这些任务?
答案 0 :(得分:14)
您应该使用gulp.watch
。我刚刚将一些构建脚本从Grunt迁移到Gulp,并希望提供相同的功能。
只需将监视任务添加到Gulpfile:
gulp.task('watch', function() {
gulp.watch('/path/to/your/css/**/*.css', ['minifyCss']);
});
运行此任务后,gulp在任务完成后不会退出。相反,当文件更改时,将运行第二个参数中指定的任务。
如果您不想在文件更改时缩小所有CSS文件,gulp-cached
包将派上用场。它会过滤自上次运行任务以来未被修改的文件(在单个Gulp运行会话中,而不是在Gulp运行之间)。只需在任务中gulp.src
调用后添加它,它就会过滤修改后的文件。
var cached = require('gulp-cached'),
cssnano = require('gulp-cssnano');
gulp.task('minifyCss', function() {
return gulp.src('/path/to/your/css/**/*.css')
.pipe(cached('cssFiles'))
.pipe(cssnano()) // or whatever plugin you use for minification
.pipe(gulp.dest('./dist/'));
}
我确实尝试从VS任务运行器运行类似于此任务的任务,但它不喜欢我的Gulpfile中使用的ES6功能,因此我不知道它是否能够正常运行任务。但是它从命令行开始按预期工作。