• Gulp 之图片压缩合并


      同事需要处理很多的图片,由于UI那边提供图片比较大,为了性能好一点,程序包小一点,因此希望我帮忙做成小程序来完成此工作。

      其实之前做过一个grunt写的图片压缩合并工具,当时是为了处理270多个国家/地区的国旗/logo,这次打算用gulp写一个,很久没碰过了,分了一下,大概两件事需要我去做:

       1.图片压缩

       2.图片雪碧图生成

      然后在很容易就百度到了gulp-imagemin插件,这个做压缩很容易,压缩比什么的就不细看了,当我寻找合并工具的时候,百度真的很傻,搜索到的全部是gulp-css-spriter,而这个工具是用于对css中包含的图片进行处理的,对于这个需求并不是很符合。好吧,我google下,很快找到答案了,gulp.spritesmith这个插件刚好满足需求。

      代码如下:

      

     1 var gulp=require('gulp'),
     2     spriter=require('gulp-css-spriter'),
     3     imagemin = require('gulp-imagemin'),
     4     spritesmith = require('gulp.spritesmith');
     5 
     6 
     7 gulp.task('imagesmin', function(){
     8 
     9     return gulp.src("img/*")
    10         .pipe(imagemin())
    11         .pipe(gulp.dest("temp"))
    12         .pipe(spriter({
    13             'spriteSheet': './dist/spritesheet.png',
    14             'pathToSpriteSheetFromCSS': '../images/spritesheet.png'
    15         }))
    16         .pipe(gulp.dest('dist/css'))
    17 })
    18 //gulp.task('spriter', function() {
    19 //    return gulp.src('./src/css/styles.css')
    20 //        .pipe(spriter({
    21 //            'spriteSheet': './dist/spritesheet.png',
    22 //            'pathToSpriteSheetFromCSS': '../images/spritesheet.png'
    23 //        }))
    24 //        .pipe(gulp.dest('dist/css'));
    25 //});
    26 gulp.task('sprite', function () {
    27     var spriteData = gulp.src('temp/*').pipe(spritesmith({
    28         imgName: 'sprite.png',
    29         cssName: 'sprite.css',
    30         padding: 20
    31     }));
    32     return spriteData.pipe(gulp.dest('dist'));
    33 });
    34 gulp.task('default', ["sprite"]);

      然后,就是安装插件了,这个不想重复什么,npm  install就可以了,没什么技术含量,唯一值得一提的是,运行的时候遇到一个gulp安装好了,结果报错没有命令gulp,网上查了下,需要修改环境变量,我就把环境变量了下就可以运行了。

      另外,gulp.spritesmith很强大,支持生成的css文件模板,可以设置图标的排列方式,间距,总之,很齐全的一个工具,附上npm地址:

       https://www.npmjs.com/package/gulp.spritesmith 

      英文文档还是不错的,学习了,记录一下。

  • 相关阅读:
    对我最重要的三个老师
    究竟 javascript 错误处理有哪些类型?
    前端小白凭什么杀进 BAT?
    金九银十,换工作热潮来临!
    适用于Java开发人员的SOLID设计原则简介
    在5分钟内将Spring Boot作为Windows服务启动
    Redis中的Java分布式缓存
    Arrays工具类详解
    SpringBoot整合redis
    java 数组用法详解
  • 原文地址:https://www.cnblogs.com/onedayof2010/p/5127126.html
Copyright © 2020-2023  润新知