#智能合并CSS精灵图(iSpriter)
使用nodejs实现, 依赖CSSOM, node-canvas
使用 bin-packing 算法排列图片, 后续支持选择其他算法
在此, 感谢这些开源项目的作者, 以及给本项目贡献代码的同学
编写css 文件时什么都不用管, 该用什么图片用什么图片, 该怎么定位就怎么定位, 不用改变原有的 css 编写方式
发布前执行 ispriter, 所有合并图片和定位都自动帮你完成
- 智能提取background的url和position等信息
- 智能判断使用了background-position(使用px为单位)定位的图片并重新定位
- 兼容已经合并了的图片, 并重新定位
- 多个css文件合并时,排除并重用已经合并的图片
- 智能设置被合并图片的宽高
- 支持设定合并后图片的最大大小
- 支持设置合并后的图片间距
- 跳过background-position是right/center/bottom的图片
- 跳过显式的设置平铺方式为repreat的图片
- 跳过设置了background-size的图片
{
"algorithm": "growingpacker",//optional 目前只有 growingpacker
"input": {
"cssRoot": "./../test/css/", //required
"imageRoot": "",//optional 默认 cssRoot
"format": "png"//optional
},
"output": {
"cssRoot": "./../test/sprite_output/css/", //optional 默认和input cssRoot一致
"imageRoot": "../images/",//optional 相对于 cssRoot 的路径, 默认 "./images/", 最终会变成合并后的的图片路径写在css文件中
"maxSize": 60,//optional 图片容量的最大大小, 单位 KB, 默认 0
"margin": 5,//optional 合成之后, 图片间的空隙, 默认 0
"prefix": "sprite_",//optional
"format": "png"//optional 输出的图片格式
}
}
{
"input": "./../test/css/", // input cssRoot
}
var spriter = require('ispriter');
var configFile = '../src/config.example.json';
spriter.merge(configFile);
node -e "require('ispriter').merge('../src/config.example.json')"
var spriter = require('ispriter');
spriter.merge('D:/desktop/dev/workspace/product/appcenter/appBrwoser/css/app.css');
spriter.merge('D:/desktop/dev/workspace/product/appcenter/appBrwoser/css/');
具体实例请到项目根目录下的 test 目录, 执行 node dosprite.js 体验实际效果