npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

grunt-img-sprite

v0.2.1

Published

auto image sprite

Downloads

4

Readme

grunt-img-sprite

Grunt 下的精灵图自动构建工具,基于 img-sprite 实现,不依赖 GM 等图形处理库

安装

这个插件需要 Grunt ~0.4.5

如果你还没有使用过 Grunt,一定要查看入门指南,因为它解释了如何创建一个 Gruntfile 以及安装和使用 Grunt 插件。一旦你熟悉这个过程中,您可以安装这个插件,使用此命令:

npm install grunt-img-sprite --save-dev

一旦插件被安装,你可以在 Gruntfile 内配置这行JavaScript代码:

grunt.loadNpmTasks('grunt-img-sprite');

特性

  1. 像 FIS 一般,通过在 css 文件中背景图片添加标识合并精灵图。跟平时一样写样式,仅在打包阶段产出精灵图和新的 css 文件。不关心是否使用 SASS 等
  2. 能够根据标识产出多个精灵图
  3. 不依赖 Less 等 CSS 预处理器
  4. 兼容 Retina,并自动插入媒体查询代码
  5. Base64 内联图片,通过 ?__inline 标识
  6. 使用要简单,简单,简单,不依赖于 GM 等图像处理库
  7. 设计稿每次导出 @2x 的图片即可,由工具产出 @1x 的图片

使用

简单配置如下

Gruntfile

grunt.initConfig({
  	img_sprite: {
  		task: {
  			src: 'css/main.css',
			dest: 'css/dest.css'	
  		}
	}
});
...

main.css

.icon0 {
  width: 128px;
  height: 128px;
  background: url(../images/0.png?__tom) no-repeat;
  background-size: 128px 128px;
}
.icon1 {
  width: 128px;
  height: 128px;
  color: #ccc;
  background: url(../images/1.png?__tom) no-repeat;
  background-size: 128px 128px;
}
.icon2 {
  width: 50px;
  height: 50px;
  color: #ccc;
  background: url(../images/2.png?__inline) no-repeat;
  background-size: 50px 50px;
}

css 文件

精灵图

更多配置如下

grunt.initConfig({
    img_sprite: {
        options: {
            output: 'test/tmp/',
            imgPath: '../images/',
            prefix: 'sprite-',
            retina: false,
            algorithm: 'binary-tree',
            padding: 10,
            sizeLimit: 10 * 1024
        },
        task: {
            src: 'css/*.css',
            dest: 'dest/css'
        }
    },
});

参数

task.src

  • 类型:Array
  • 说明:css 文件路径,必须
  • 默认:无

task.dest

  • 类型:String
  • 说明:css 产出路径,当仅处理一个 css 文件时可指定文件名
  • 默认:当前目录

options.output

  • 类型:String
  • 说明:精灵图产出路径
  • 默认:当前目录

options.retina

  • 类型:Boolean
  • 说明:是否产出 @2x 图片
  • 默认:true

options.padding

  • 类型:Number
  • 说明:精灵图中图片间距
  • 默认:10

options.prefix

  • 类型:String
  • 说明:精灵图前缀;当产出 css 文件与指定 css 的目录一致时,为 css 文件添加该前缀
  • 默认:'sprite-'

options.imgPath

  • 类型:String
  • 说明:css 文件中的图片路径
  • 默认:'../images/'

options.algorithm

  • 类型:String
  • 说明:图片排序算法
  • 可选:top-down, left-right, diagonal, alt-diagonal, binary-tree
  • 默认:'binary-tree'

options.media

  • 类型:String
  • 说明:媒体查询条件
  • 默认:only screen and (-webkit-min-device-pixel-ratio: 1.5)

options.sizeLimit

  • 类型:Number
  • 说明:内联图片大小限制
  • 默认:5000

其他问题

  1. 不依赖 GM 等图形处理库
    img-sprite 从 v0.3.0 开始使用 images 替代了 spritesmith 默认的位图引擎,解决了 windows 平台下产出精灵图可能出现噪点的情况,缩短了产出图片的耗时。同时不再依赖 GM,再也不需要折腾啦!产出图片的质量也比较出色,感谢作者~

    此外尝试了 node Jimp,缩小图片效果不理想;尝试了 phantomjs 作为位图引擎,但发现在 window 和 osx 下速度大幅慢于其他引擎,故不采用。暂时不支持在 img-sprite 中配置其他的位图引擎

  2. 对其他样式的影响
    调整 AST 的过程中会将做这样的处理,删除 background 有关的样式并插入新的值。保留背景颜色,不支持同时定义多个背景图片

    var colorReg = /#\w{3,6}|rgba?\(.+?\)/,
        resetBgReg = /background-[size|image|position]/,
    ...
    // 设置 background 样式
    spriteSet[i].node.value = color + 'url(' + options.imgPath + basename + ') ' + offsetX + ' ' + offsetY;
    ...
    // 插入 background-size
    spriteSet[i].parent.push({
        type: 'declaration',
        property: 'background-size',
        value: ceil(properties.width / pow) + 'px ' + ceil(properties.height / pow) + 'px'
        });
  3. 缺点

    • 目前仅支持处理 .png
    • 写样式的时候建议元素的宽高和背景图的宽高一致,其他情况下精灵图不方便处理
    • 不支持背景图 repeat
    • 暂不支持多个背景图
    • 仅支持处理 .css。实际上推荐使用 SASS 等写样式,在产出 css 文件后交给 img-sprite 做进一步精灵图合并处理即可

更新日志

  • 0.2.0:
    • 使用 images 替代了 spritesmith 默认的位图引擎,解决了 windows 平台下产出精灵图可能出现噪点的情况,同时不再依赖 GM
  • 0.1.0:基本功能