zoukankan      html  css  js  c++  java
  • 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 

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

  • 相关阅读:
    右上角的 那个 个数,
    i am sorry,
    搞定了,一个是重复,一个是 判断navigationcontroller里面 最后的那个类,
    ios no code signature found,
    这次逻辑通了,
    分析下现在 遇到的这个棘手的问题,
    时间 折腾我的,
    老大说 调到 4寸的 就不用适配 5了,
    应用程序生命周期,
    解决【npm ERR! Unexpected end of JSON input while parsing near '...sh_time":141072930277'】方案
  • 原文地址:https://www.cnblogs.com/onedayof2010/p/5127126.html
Copyright © 2011-2022 走看看