简介:
gulp有着丰富的插件库,她能自动化地完成javascript、coffee、sass、less、html、image、css 等文件的的测试、检查、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤,能快速提高我们项目的开发效率。
1.gulpfile.js基本配置示例:
通过此配置示例可以让我们快速编写js,css代码并打包压缩文件,减少文件资源大小。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| var gulp = require('gulp'); var sass = require('gulp-sass'); var minifycss = require('gulp-minify-css'); var cleancss = require('gulp-clean-css'); var livereload = require('gulp-livereload'); var babel = require('gulp-babel'); var uglify = require('gulp-uglify'); var autoprefixer = require('gulp-autoprefixer');
gulp.task('sass', function () { gulp.src('./sass/**/*.scss') .pipe(sass()) .pipe(cleancss({ advanced: false, compatibility: 'ie7', keepBreaks: true, keepSpecialComments: '*' })) .pipe(autoprefixer({ browsers: ['last 2 versions', 'Android >= 4.0'], cascade: true, remove:true })) .pipe(gulp.dest('./css')) .pipe(livereload()); });
gulp.task('babel', function () { gulp.src('./src/**/*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(livereload()) .pipe(uglify({ })) .pipe(gulp.dest('./js')) });
gulp.task('auto', function () { gulp.watch('./sass/**/*.scss', ['sass']); gulp.watch('./src/**/*.js', ['babel']); }); gulp.task('default',['sass','auto','babel']);
|
配置文件详解:
执行一个任务分三步走:
1.导入工具包 require(‘node_modules里对应模块’)
1
| var gulp = require('gulp');
|
2.定义一个任务(自定义任务名称)
1 2 3 4 5
| gulp.task('test', function () { gulp.src('./sass/**/*.scss') .pipe(test()) .pipe(gulp.dest('./css')) })
|
3.执行任务:
cmd命令提示符
如果只是简单的配置了上面部分,每当我们修改了代码都需要重新执行命令gulp test,而且如果有多个任务就要执行多个命令,为了避免这么繁琐的操作可以加上如下配置:
1 2 3 4 5
| gulp.task('auto', function () { gulp.watch('./src/**/*.js', ['test']); }); gulp.task('default',['auto','test']); //定义默认任务
|
这样我们只需要输入一次命令gulp,就可以监听到每次代码的修改,自动帮我们编译,减少了很多繁琐的操作。
2.使用gulp编译css
1.gulp-sass的使用:
1.简介:SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。
2.本地安转:npm install gulp-less –save-dev
3.配置gulpfile.js
1.配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var sass = require('gulp-sass');
gulp.task('sass', function () { gulp.src('./sass/**/*.scss') .pipe(sass({ outputStyle: 'compact' })) .pipe(gulp.dest('./css')) });
|
2.sass使用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| $blue : #1875e7; .class { font-size: 12px; } .main{ color:$blue; @if 1 + 1 == 2 { border: 1px solid red; }@if 5 < 3 { border: 2px dotted blue; } .parent{ margin-left:10px + 20px; &:hover{ cursor: pointer; @extend .class; } } }
|
4.执行任务:
命令提示符:gulp sass
5.编译结果:
![image]()
2.gulp-minify-css的使用:
1.插件介绍:压缩css文件,减小文件大小,并给引用url添加版本号避免缓存
2.本地安转:npm install gulp-minify-css –save-dev。
3.配置gulpfile.js
1.配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| var minifycss = require('gulp-minify-css');
gulp.task('sass', function () { gulp.src('./sass/**/*.scss') .pipe(sass({ outputStyle: 'compact' })) .pipe(minifycss({ advanced: false, compatibility: 'ie7', keepBreaks: true, keepSpecialComments: '*' })) .pipe(gulp.dest('./css')) });
|
2.使用示例:
![image]()
4.执行任务:
命令提示符:gulp sass
5.编译结果:
![image]()
编译之后的css文件被压缩了
3.gulp-autoprefixer:
1.插件介绍:根据设置浏览器版本自动处理浏览器前缀
2.本地安转:npm install gulp-autoprefixer –save-dev。
3.配置gulpfile.js
1.配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| var autoprefixer = require('gulp-autoprefixer');
gulp.task('sass', function () { gulp.src('./sass/**/*.scss') .pipe(sass({ outputStyle: 'compact' })) .pipe(autoprefixer({ browsers: ['last 2 versions', 'Android >= 4.0'], cascade: true, remove:true })) .pipe(gulp.dest('./css')) });
|
2.使用示例:
![image]()
4.执行任务:
命令提示符:gulp sass
5.编译结果:
浏览器中的编译结果:
![image]()
3.使用gulp编译js
1.gulp-babel的使用:
1.介绍:gulp-babel是可以将ES6编译成大多数浏览器可识别的ES5规范
2.本地安转:
1.npm install gulp-babel –save-dev
2.npm install babel-preset-es2015 –save-dev
3.配置gulpfile.js
1.配置:
1 2 3 4 5 6 7 8 9 10 11 12 13
| var less = require('gulp-babel');
gulp.task('babel', function () { gulp.src('./src/**/*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(gulp.dest('./js')) });
|
2.ES6使用示例:
![image]()
4.执行任务:
命令提示符:gulp babel
5.编译结果:
![image]()
2.gulp-uglify的使用:
1.介绍:压缩js代码
2.本地安转: npm install gulp-uglify –save-dev
3.配置gulpfile.js
1.配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var uglify = require('gulp-uglify');
gulp.task('babel', function () { gulp.src('./src/**/*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(uglify({ })) .pipe(gulp.dest('./js')) });
|
2.ES6使用示例:
![image]()
4.执行任务:
命令提示符:gulp babel
5.编译结果:
![image]()
gulp插件库还有其他很多优秀的插件,可以根据自己的需要引入。
此dome在我的github上,可以下载自行查看https://github.com/xiongcao/project-gule