gulp-webserver是开启服务器,一般和gulp-livereload结合使用。而这两个结合使用效果,几乎相似browser-Sync。下面是gulp-webserver和gulp-livereload的一个小demo。javascript
源代码下载(寄放在码云上)。css
1. 所用的gulp-task的包及其余npm包html
2.所需的目录结构java
3.gulpfile.js 中设置源码目录和开发目录git
var app = { srcPath: 'src/', devPath: 'build/' };
4.安装gulp-load-plugins,这个task是来避免重复require(引用模块),因此在gulpfile.js中看到以下代码:web
var gulp = require('gulp'), $ = require('gulp-load-plugins')();
引入gulp-load-plugins以后,使用其余模块方法,只须要在其方法前加上“$.”,以sass为例:npm
gulp.task('sass',function(){ gulp.src(app.srcPath+'styles/*.scss') .pipe($.sourcemaps.init()) .pipe($.sass()) //这里加了./ 表示生成的.map文件 .pipe($.sourcemaps.write('./')) .pipe(gulp.dest(app.devPath + 'css')) //单独使用livereload监听 //.pipe($.livereload()); });
5.设置服务器端口,和浏览器同步gulp
gulp.task('webserver', function() { gulp.src(app.devPath) // 服务器目录(./表明根目录) .pipe($.webserver({ // 运行gulp-webserver livereload: true, // 启用LiveReload,去掉f5刷新的痛点 open: true, // 服务器启动时自动打开网页 port: 3000 })); });
6. 整合默认一个任务浏览器
// 监放任务 gulp.task('watch',function(){ gulp.watch(app.srcPath + 'styles/*.scss', ['sass']); gulp.watch(app.srcPath + '**/*.html', ['html']) // 监听根目录下全部.html文件 }); //默认任务 gulp.task('default',['webserver','watch']);
发现两个问题: sass
1.运行gulp,发现sass能监听,但检查语法错误能力不够全,以下:
sass语法中变量声明在变量调用以前,而本demo并没所以终止监听或者出现错误。
2.另外如出现错误,命令端口会挂掉,能够用gulp处理错误的task,如:gulp-plumber(传送门)