4. 其他插件介绍(Other plug-ins)

这部分插件作为扩展阅读,只做简单介绍。每个插件都有每个插件的特性,根据你的喜好和实际操作环境而定,萝卜青菜各有所爱。用的人最多的,不代表就是适合你的。总之,有时间有精力的,可以多试试,多玩玩,多配配,这里也只是冰山一角。

4.1 CSS类

1. CSS压缩 (gulp-minify-css)

安装命令:
npm install gulp-minify-css --save-dev

基础配置:

  1. var gulp = require('gulp'); // 基础库
  2. var minifyCss = require('gulp-minify-css'); // CSS压缩
  3. gulp.task('minify-css', function() {
  4. return gulp.src('css/*.css')
  5. .pipe(gulp.dest('dist'));
  6. });

执行命令:
gulp minify-css

2. CSS预处理/Less编译 (gulp-less)

安装命令:
npm install gulp-autoprefixer --save-dev

基础配置:

  1. var gulp = require('gulp'); // 基础库
  2. var less = require('gulp-less'); // LESS编译
  3. gulp.task('less', function () {
  4. gulp.src('src/less/*.less')
  5. .pipe(less())
  6. .pipe(gulp.dest('src/css'));
  7. });

执行命令:
gulp less

3. 自动添加CSS3浏览器前缀(gulp-autoprefixer):

-prefix-free 大家肯定都比较熟,会自动为CSS添加上浏览器的前缀,帮你摆脱前缀痛苦。而 gulp-autoprefixer 插件同样如此。

安装命令:
npm install gulp-autoprefixer --save-dev

基础配置:

  1. var gulp = require('gulp'); // 基础库
  2. var autoprefixer = require('gulp-autoprefixer'); // 自动添加CSS3浏览器前缀
  3. gulp.task('prefix', function () {
  4. gulp.src('src/css/*.less')
  5. .pipe(less())
  6. .pipe(gulp.dest('src/css'));
  7. });
  8. var gulp = require('gulp'); // 基础库
  9. var sass = require('gulp-ruby-sass'), // sass/scss编译
  10. autoprefixer = require('gulp-autoprefixer'); // 自动添加CSS3浏览器前缀
  11. gulp.task('sass', function () {
  12. return sass('src/css', { style: 'compressed' }) // 指明源文件路径、并进行文件匹配
  13. .on('error', function (err) {
  14. console.error('Error!', err.message); // 显示错误信息
  15. })
  16. .pipe(autoprefixer({
  17. browsers: ['last 2 versions'], // 主流浏览器的最新两个版本
  18. cascade: false // 是否美化属性值
  19. }))
  20. .pipe(gulp.dest('dist/css')); // 输出路径
  21. });

执行命令:
gulp sass

4.2 图像类

1. 使用TinyPN API压缩图片(gulp-tinypng):

使用TinyPNG官方API进行图片压缩。我个人比较喜欢这个,因为之前一直有在使用。但由于TinyPNG服务器在国外,有时执行起来会很慢,除非你有VPN,所以在这只做简单介绍。
经过我的测试,gulp-tinypng压缩后的图片大小,相当于使用imagemin-pngquant深度压缩后的大小。使用时需先注册TinyPNG账户,获你的API KEY。免费版每个月可以压缩500张图片,对于一般项目而言已经足够。

安装命令:
npm install gulp-tinypng --save-dev

基础配置:

  1. var gulp = require('gulp'); // 基础库
  2. var tinypng = require('gulp-tinypng'); // 使用TinyPN API压缩图片
  3. gulp.task('tinypng', function(){
  4. return gulp.src('src/images/**/*') // 源地址
  5. .pipe(tinypng('填写TinyPN API KEY'))
  6. .pipe(gulp.dest('dist/images')); // 输出路径
  7. });

执行命令:
gulp tinypng

4.3 其他

1. 缓存代理(gulp-cache):

缓存操作过的文件,当文件修改时,只编译当前修改的文件。其余文件直接从缓存中调取,提高效率。
缺点:因为是缓存,所以如果文件被删除,但没及时清理缓存文件时,就会导致被删除的文件又从缓存中读取了出来,所谓成也萧何败也萧何。

安装命令:
npm install gulp-cache --save-dev

基础配置:

  1. var gulp = require('gulp'); // 基础库
  2. var imagemin = require('gulp-imagemin'), // 图片压缩
  3. pngquant = require('imagemin-pngquant'), // 深度压缩
  4. pngquant = require('imagemin-cache'), // 缓存代理
  5. clean = require('imagemin-clean'); // 文件清理
  6. // imagemin 图片压缩(利用cache)
  7. gulp.task('images', function(){
  8. return gulp.src('src/images/**/*.{png,jpg,gif,svg}') // 指明源文件路径、并进行文件匹配
  9. .pipe(cache(imagemin({
  10. progressive: true, // 无损压缩JPG图片
  11. svgoPlugins: [{removeViewBox: false}], // 不要移除svg的viewbox属性
  12. use: [pngquant()] // 使用pngquant插件进行深度压缩
  13. })))
  14. .pipe(gulp.dest('dist/images')); // 输出路径
  15. });
  16. // 清理缓存文件
  17. gulp.task('clean', function (done) {
  18. return cache.clearAll(done);
  19. });