请问怎样实现文件修改时,自动自动打包,执行其它任务?

来源:9-4 如何打包发布-3

斜杠男人

2017-04-16

var gulp = require('gulp');

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

var revReplace = require('gulp-rev-replace');

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

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

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

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


gulp.task("default", function() {

var jsFilter = filter("**/*.js", { restore: true });

var cssFilter = filter("**/*.css", { restore: true });

var indexHtmlFilter = filter(['**/*', '!**/index.html'], { restore: true });


return gulp.src("test/index.html")

.pipe(useref())      // Concatenate with gulp-useref

.pipe(jsFilter)

.pipe(uglify())             // Minify any javascript sources

.pipe(jsFilter.restore)

.pipe(cssFilter)

.pipe(csso())               // Minify any CSS sources

.pipe(cssFilter.restore)

.pipe(indexHtmlFilter)

.pipe(rev())                // Rename the concatenated files (but not index.html)

.pipe(indexHtmlFilter.restore)

.pipe(revReplace())         // Substitute in new filenames

.pipe(gulp.dest('dist'));

});

//监听文件的改变,自动执行任务,例如修改了CSS代码或是JS代码,不用手动打包,他会自动去打包或者自动执行一些其他的任务;

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

gulp.task('stream', function () {

  // Endless stream mode

return watch('css/*.css', { ignoreInitial: false })

.pipe(gulp.dest('dist'));

});


gulp.task('callback', function () {

  // Callback mode, useful if any plugin in the pipeline depends on the `end`/`flush` event

return watch('css/*.css', function () {

gulp.src('css/*.css')

.pipe(gulp.dest('dist'));

});

});

1.执行命令:gulp stream callback,显示如下:

PS E:\Program\Nodejs> gulp stream callback

[00:20:43] Using gulpfile E:\Program\Nodejs\gulpfile.js

[00:20:43] Starting 'stream'...

[00:20:43] Starting 'callback'...

2.更改相应目录下的css文件,dist目录没有变化。

问题:请问怎样实现文件修改时,自动自动打包,执行其它任务?

写回答

1回答

传说中的小白龙

2017-04-20

watch貌似是内置在gulp中的。通过gulp.watch(file,task)或者gulp.watch(file,callback)来监听实现监听文件变化后执行的任务或者回调函数。

在这里嘛,就可以写成

//设置gulp'dev'任务
gulp.task('dev',function(){
    //该任务目的监视css下所有css文件,文件发生变动执行'dest'任务
    gulp.watch('css/*.css',['dest']);
})

gulp.task('dest',function(){
    //得到css文件夹下所有css文件
    return gulp.src('css/*.css')
            //将得到文件输出到'dest'文件夹
            .pipe(gulp.dest('dest'))
})

对于gilp-watch插件不熟悉,不过看起来应该没有原生的这么好懂,我推荐使用gulp.watch来监听文件变动。

0
0

响应式开发一招致胜

用一套代码开发出不受设备型号、尺寸限制的互联网金融网站

4021 学习 · 752 问题

查看课程