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

spritesheet-assembler

v0.2.2

Published

Spritesheet assembler with support for SVG spritesheets

Downloads

4

Readme

Spritesheet Assembler Build Status

  • Support for SVG/PNG/JPG sprites
  • Generate CSS/JSON descriptors
  • Simple: tiny source, minimal dependencies. Please fork/contribute!

Install

This package relies on GraphicsMagick, so:

  • OS X: brew install graphicsmagick
  • Linux: sudo apt-get install graphicsmagick

Install:

npm install -g spritesheet-assembler

And run:

spass -i icons/ -o images/spritesheet.png -d styles/icons.css

Demos

  1. CSS SpriteSheet demo
  2. Spritesheet packing algorithm demo
  3. Check out utility results in tests

Algorithm

Spritesheet packing algorithm is based on the one described in Jake's great article. This implementation, however, doesn't use binary tree, maintaining instead a list of free spaces.

Code Overview

The code is split into three parts:

  • lib/ - all the logic of bin-packing is here. Lib provides core abstractions of Sprite and SpriteSheet, as well as the bin-packing algorithm itself. This folder doesn't and shouldn't depend on any core node modules.
  • compositors/ - this folder contains compositors, which are responsible for building actual spritesheet out of sprites. Compositors are associated with export mime types, the relation is defined in compositors/index.js.
  • descriptors/ - this folder contains spritesheet descriptor generators. Descriptor generators are associated with descriptor mime type, the relation is defined in descriptors/index.js.

Tests

Each test runs spritesheet-assembler with given arguments and compares generated files with expected results.

To run all tests:

npm test

To run only tests with 'svg' in name:

npm test -- svg

To reset test results for all svg tests: (or generate results for a newly added test):

npm test -- svg reset-results

To add a test:

  1. create a new folder under tests/ folder which starts with two-digit number, e.g. tests/01-some-new-test/.
  2. add arguments.js file which should define input arguments for the utility: example

History

This started as a patch to Chrome DevTools project: https://codereview.chromium.org/2671413004/

License

See LICENSE here.

Contacts

Feel free to drop me a line at [email protected] or via twitter