您的位置:首页 > Web前端

浅谈前端构建工具gulp

2017-03-30 17:14 363 查看
1、gulp

gulp是一个前端自动化的构建工具,采用这个工具,可以提升性能和效率。

 

2、为什么要用gulp

1) .js和.css属于静态文件,由于浏览器存在缓存机制,为了避免缓存带来的问题,可以利用构建工具,给每一个静态文件添加一个版本号以区别文件。

2) 性能优化:文件合并,减少http请求;文件压缩,减少文件体积,加快下载速度;

3) 效率提升:自动添加CSS3的vendor前缀;代码分析检查改正;使用MVC和MVVM的框架后,可在提交之前使用gulp自动跑一遍单元测试。

 
3、gulp的使用
1) 安装gulp之前,先安装node.js环境,因为gulp是基于node.js的前端构建工具:
在命令行执行:npm install --global gulp
2) 在开发项目上,安装项目依赖:
在命令行执行:npm install --save-dev gulp
3) 在项目根目录下创建一个文件,用来配置gulp的相关task,文件内容示例如下:

var gulp = require('gulp'); // 告知node先局部(node_modules)查找gulp包,找不到再去全局查找,找到后赋值给gulp变量,就可以使用了。
gulp.task('helloWorld', funcion() { // 配置gulp任务,指定任务名为helloWorld
console.log('Hello world');
});


4) 执行任务
在命令行执行:gulp helloWorld
 
4、gulp常用插件:
run-sequence:让gulp任务,可以相互独立,解除任务间的依赖,增强task复用
browser-sync:静态文件服务器,同时也支持浏览器自动刷新
del:删除文件/文件夹
gulp-coffee:编译coffee代码为Js代码,使用coffeescript必备
coffee-script:gulpfile默认采用js后缀,如果要使用gulpfile.coffee来编写,那么需要此模块
gulp-nodemon:自动启动/重启你的node程序,开发node服务端程序必备
yargs:用于获取启动参数,针对不同参数,切换任务执行过程时需要
gulp-util:gulp常用的工具库
gulp-uglify:通过UglifyJS来压缩JS文件
gulp-concat:合并JS
gulp-sourcemaps:处理JS时,生成SourceMap
gulp-less:将less预处理为css
gulp-sass:将sass预处理为css
gulp-autoprefixer:使用Autoprefixer来补全浏览器兼容的css。
gulp-minify-css:压缩css。
connect-history-api-fallback:开发angular应用必须,用于支持HTML5 history API.

5、gulp的几个方法:
1) .src():文件的源路径;
① *.sass:匹配当前目录下的所有sass文件;
② **/*.sass:匹配当前目录及其子目录下的所有.sass文件;
③ !test.scss:匹配当前目录下除test.sass外的文件;
④ *.+(scss|sass):匹配当前目录下的.scss和.sass文件。
2) .pipe():是任务运行的管道;
3) .dest():是任务结束后的输出路径;
 
5、gulp简单示例:将sass预处理(编译)为css

var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', funcion() { // 配置gulp任务,指定任务名为sass
return gulp.src('css/*.sass')
.pipe(sass())
.pipe(gulp.dest('css'));
});


源路径‘css’里面的.sass文件:
div {
width: percentage(3/8);
}

在命令行执行:gulp sass,输出路径‘css’里面生成同名的.css文件:
div {
width: percentage(0.375);
}

 
6、gulp常用插件示例:
1) 语法检查:一般和监听文件变化配合使用,当文件修改时检查是否有语法错误,若有语法错误则在命令行中输出错误信息。
2) 文件合并:把所有.js文件合并成一个.js文件,把所有.css文件合并成一个.css文件。
3) 文件压缩:压缩文件,也可以是合并后的文件。
4) 监听文件变化:监听文件是否修改,若修改的话就执行特定操作,比如语法检查、文件合并、文件压缩等。
var gulp = require('gulp');
var jshint = require('gulp-jshint'); // 语法检查
var concat = require('gulp-concat'); // 文件合并
var uglify = require('gulp-uglify'); // 文件压缩
var rename = require('gulp-rename'); // 重命名
// 语法检查
gulp.task('jshint', function() {
return gulp.src('js/*.js').pipe(jshint()).pipe(jshint.reporter('default'));
});
// 文件合并与压缩
gulp.task('minify', function() {
return gulp.src('js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('js/dist'))
.pipe(uglify())
.pipe(rename({extname: '.min.js'})) // 也可以写成.pipe(rename('all.min.js');
.pipe(gulp.dest('js/dist'));
});
// 监听文件变化
gulp.task('watch', function () {
gulp.watch('js/*.js', ['jshint', 'minify']);
});
// 注册缺省任务
gulp.task('default', ['jshint', 'minify', 'watch']);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: