gulp是一个很好得东东,用好它可以提高开发效率,加快开发速度。但是,前提是用好...如果gulpfile的流程写的有问题,就会导致很头疼的问题,就是每次修改代码,都要build一下,再serve一下,这样就违反了我们刚开始使用gulp的初衷了,使得开发变得繁琐和低效。那么,如何实现实时刷新呢?Browsersync便能实现这样的功能。http://www.browsersync.cn/,这个是它的官网。
好的,下面就动手修改你的gulpfile吧。
首先,先安装
$ npm install browser-sync gulp --save-dev 然后在您的 gulpfile.js 文件里使用它们 var gulp = require('gulp'); var browserSync = require('browser-sync').create(); var reload = browserSync.reload; // 静态服务器 gulp.task('browser-sync', function() { browserSync.init({ server: "www/build" }); }); 这个server是指静态服务器,即项目要运行的路径。一般情况我们使用gulp,会将项目的初始代码迁移到另外一个文件夹中,我这里原本是app文件夹,然后都流到www下的build文件夹下。
然后就是改造scripts,html和sass这三个方法,分别是集成js,集成html,集成css。当然这个不一定,你可以根据自己的需求去改造。 gulp.task('scripts', function () { return gulp.src([你的js文件路径]) .pipe(concat('all.js')) .pipe(gulp.dest('www/build')) .pipe(reload({stream: true})); }); gulp.task('sass', function () { return gulp.src(你的scss文件路径) .pipe(sass()) .pipe(gulp.dest('www/build/css')) .pipe(reload({stream: true})); }); gulp.task('html', function () { return gulp.src([你的html文件路径]) .pipe(gulp.dest('www/build/pages')) .pipe(reload({stream: true})); }) 可以看到,这三个其实都是在最后加了.pipe(reload({stream: true})); 然后按正常不走,我们要clean,build,就像这样 gulp.task('build', function (cb) { runSequence('clean', ['sass', 'indexhtml', 'html', 'lib', 'scripts'], cb) }); 最后才是执行我们的browserSync,它会自动打开浏览器,就像ionic serve gulp.task('serve', function () { browserSync.init({ server: "www/build" }); gulp.watch(src.scss, ['sass']); gulp.watch(src.html,['html']); gulp.watch(src.js, ['scripts']); }); 这里,我们使用的是watch,它会实时监听代码的变动,然后再执行相应的任务。这样的话,我们每次执行项目就只需要gulp build,然后再gulp serve就可以了,之后就不用管了,修改了代码,然后保存一下,浏览器就会刷新了。不过建议webstorm设置成ctrl+s保存,而不是自动保存,不然会卡的... 我写了一个简单的demo,如果还有不清楚的话,可以看看,地址是 git clone https://github.com/hanwolfxue/my-first-gulp.git
