原因是执行顺序的问题
// css处理
gulp.task('css',function() {
return gulp.src(css_path)
.pipe(stylus(config.stylus))
.pipe(autoprefixer(config.autofx))
.pipe(csso())
.pipe(rev()) //定义一个流,将所有匹配到的文件名全部生成相应的版本号
.pipe(gulp.dest(base_dist + '/styles'))
.pipe(rev.manifest()) //把所有生成的带版本号的文件名保存到json文件中
.pipe(gulp.dest('./dev/rev/css')) //把json文件保存到指定的路径,自己记住就好
.pipe(reload({ stream: true }));
});
// js处理
gulp.task('js',function() {
return gulp.src(js_path)
.pipe(babel())
.pipe(uglify())
.pipe(rev())
.pipe(gulp.dest(base_dist))
.pipe(rev.manifest())
.pipe(gulp.dest('./dev/rev/js'))
.pipe(reload({ stream: true }));
});
// view页面处理
gulp.task('views',function() {
return gulp.src(view_path)
.pipe(useref())
.pipe(gulp.dest('./dev'))
.pipe(reload({ stream: true }));
});
// 文件版本号更新
gulp.task('version', function(){
return gulp.src(['./dev/rev/**/*.json','./dev/**/*.html'])
.pipe(revCollector({
replaceReved: true
}))
.pipe(gulp.dest('./dev')); //html更换css,js文件版本,更改完成之后保存的地址
})
// 监听文件改动
gulp.task('watch',function () {
gulp.watch(css_path, ['css', 'version']);
gulp.watch(js_path, ['js', 'version']);
gulp.watch(img_path, ['images']);
gulp.watch(view_path, ['views']).on('change', reload);
})
上述的写法中, gulp.watch() 后面的 命令数组是没有先后执行顺序的,是并行执行的, 导致了先执行version后执行css的版本更新
所以, 导致延迟一个版本的自动刷新时肯定的, 应该改成下面的, 串行执行命令
// css处理
gulp.task('css',function() {
return gulp.src(css_path)
.pipe(stylus(config.stylus))
.pipe(autoprefixer(config.autofx))
.pipe(csso())
.pipe(rev()) //定义一个流,将所有匹配到的文件名全部生成相应的版本号
.pipe(gulp.dest(base_dist + '/styles'))
.pipe(rev.manifest()) //把所有生成的带版本号的文件名保存到json文件中
.pipe(gulp.dest('./dev/rev/css')) //把json文件保存到指定的路径,自己记住就好
.pipe(reload({ stream: true }));
});
// js处理
gulp.task('js',function() {
return gulp.src(js_path)
.pipe(babel())
.pipe(uglify())
.pipe(rev())
.pipe(gulp.dest(base_dist))
.pipe(rev.manifest())
.pipe(gulp.dest('./dev/rev/js'))
.pipe(reload({ stream: true }));
});
// view页面处理
gulp.task('views',function() {
return gulp.src(view_path)
.pipe(useref())
.pipe(gulp.dest('./dev'))
.pipe(reload({ stream: true }));
});
// 文件版本号更新
gulp.task('version', function(){
return gulp.src(['./dev/rev/**/*.json','./dev/**/*.html'])
.pipe(revCollector({
replaceReved: true
}))
.pipe(gulp.dest('./dev')); //html更换css,js文件版本,更改完成之后保存的地址
})
// css文件监听
gulp.task('watch-css',function () {
runSequence('css', 'version')
})
// js文件监听
gulp.task('watch-js',function () {
runSequence('js', 'version')
})
// 监听文件改动
gulp.task('watch',function () {
gulp.watch(css_path, ['watch-css']);
gulp.watch(js_path, ['watch-js']);
gulp.watch(img_path, ['images']);
gulp.watch(view_path, ['views']).on('change', reload);
})
现在 问题就解决了