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

imerge

v0.5.0

Published

CSS sprite tool

Downloads

17

Readme

imerge

css合图工具

#特性

  • 高性能,超简单
  • 支持background-repeatbackground-size,以及值为left/right/top/bottomcenter和百分比%不支持)的background-position
  • 支持小图在大图里面的padding值
  • 支持合图配置,即指定那些图合到一起
  • 支持ie6 hack写法,即用"_"开头的声明

##计划

  • 多图片格式支持,现在只支持png
  • 当没有自定义合图配置时,自动合图。例如,冲突检测机制

#安装

npm install -g imerge

#使用方法

##自定义配置

自定义配置,可以指定那些小图合并到一起,只需要在css中定义了背景图片的地方加上merge: value,就可以将该小图合并到value大图中。对于没有定义merge的图片,将忽略。 例如:

div {
	background: url('path/to/image.png');
	imerge: sprite;
}

然后执行

imerge source dest [options]

将会生成处理后的css文件和大图到dest文件夹。

输出的css文件内容如下:

div {
	background: url('path/to/sprite_sprite.png');
	background-position: 0px 0px;
}

大图被命名为sprite_sprite.png

##全自动合图

这种方式将扫描所有的背景图片,然后将其合并到一张图片sprite_sprite.png中,如果定义了ie6 hack写法的背景图片,合到sprite_sprite_ie6.png中。但这种情况存在以下风险:

  • 当图片存在png/git/jpg等多种格式时,无法合并
  • 当定义了不支持的属性background-position: center 40%时,无法合并
  • 当存在一张图片background-repeat: repeat-x,另一张background: repeat-y时,无法合并

使用:

imerge source dest -a

#命令选项

Options:

    -h, --help                     output usage information
    -V, --version                  output the version number
    -p, --pattern [pattern]        CSS file glob pattern
    -d, --default-padding [value]  Set default padding value
    -a, --all                      Process all background images
    -w, --webroot [path]           Set webroot path. Default: source path. Deprecated, use --source-context.
    -c, --css-to [path]            CSS output path. The priority is higher than dest
    -s, --sprite-to [path]         Sprite image output path. The priority is higher than dest
    -e, --source-context [path]    Source file webroot
    -t, --output-context [path]    Output file webroot

编程

可以将imerge当成一个node module进行编程

示例

var IMerge = require('IMerge');

var iMerge = new IMerge.IMerge(options, pathFilter);
iMerge.start();

options

{
	// 扫描css的目录
	from: '',
	// 存放处理后的css和sprite image的目录
	to: '',
	// 存放处理后的css目录,优先级高于to
	cssTo: '',
	// 存放处理后的sprite image目录,优先级高于to
	spriteTo: '',
	// 原始css文件中,绝对路径引用image相对的目录
	sourceContext: '',
	// 编译后的css文件中,绝对路径引用image相对的目录
	outputContext: '',
	// 扫描文件的glob pattern
	pattern: '/**/*.css',
	defaults: {
		// 小图在sprite中间距,类似css的写法
		padding: null
	},
	options: {
		// 是否扫描所有background background-image,而不用管是否设置了merge属性
		all: false
	}
}

pathFilter

{
	// 图片地址过滤器
	imagePathFilter: function(file, conf) {
		return file;
	},
	// sprite图片输出路径
	spriteTo: function(merge) {
		return path.join(opt.spriteTo, '/spirte_' + merge + '.png');
	},
	// sprite图片写回css中地址
	spritePathFilter: function(file) {
		return file.replace(opt.outputContext, '').replace(/\\/g, '/');
	},
	// 处理后的css存放地址
	cssTo: function(file) {
		return path.join(opt.cssTo, path.relative(opt.from, file));
	}
}

问题

  1. stylus中merge冲突

可以将css中的配置声明改为imerge

div {
  background: url('path/to/image.png');
  imerge: sprite;
}

imerge

A tool for css sprite.

#Features

  • Highly performance
  • Support background-repeat, background-size and even background-position which value is left, right, top and bottom except for center
  • Custom image padding in sprite
  • Custom merge setting
  • Support ie6 hack, i.e. declaration starts with '_'

##Plan

  • Multi image formats are supported.Only support png for now.
  • Auto generate sprite image when you don't customize merge setting, e.g. conflict detect.

#Install

npm install -g imerge

#Usage

Before using this tool, you must to customize merge setting in css files. Just add merge: value in css block which has background or background-image declaration.

For example:

div {
	background: url('path/to/image.png');
	merge: sprite;
}

then execute

imerge source dest [options]

This will generate css files and sprite images to dest directory.

##Output CSS file:

div {
	background: url('path/to/sprite_sprite.png');
	background-position: 0px 0px;
}

Sprite image is named sprite_sprite.png.

#Options

Options:

    -h, --help                     output usage information
    -V, --version                  output the version number
    -p, --pattern [pattern]        CSS file glob pattern
    -d, --default-padding [value]  Set default padding value
    -a, --all                      Process all background images
    -w, --webroot [path]           Set webroot path. Default: source path. Deprecated, use --source-context.
    -c, --css-to [path]            CSS output path. The priority is higher than dest
    -s, --sprite-to [path]         Sprite image output path. The priority is higher than dest
    -e, --source-context [path]    Source file webroot
    -t, --output-context [path]    Output file webroot

#Test

Use mocha as the unit test framwork.

npm install -g mocha
// enter project directory
mocha -w --compilers coffee:coffee-script --recursive