• Stars
    star
    1,136
  • Rank 41,003 (Top 0.9 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 12 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Grunt task for converting a set of images into a spritesheet and corresponding CSS variables

grunt-spritesmith Build status Subscribe to newsletter

Grunt task for converting a set of images into a spritesheet and corresponding CSS variables.

A folder of icons processed by grunt-spritesmith:

Fork icon + GitHub icon + Twitter icon =

generates a spritesheet:

Spritesheet

and CSS variables (available in CSS, JSON, SASS, SCSS, LESS, Stylus):

$fork_offset_x = 0px;
$fork_offset_y = 0px;
$fork_width = 32px;
$fork_height = 32px;
...
$github_offset_x = -32px;
$github_offset_y = 0px;
$github_width = 32px;
$github_height = 32px;
...

Retina support

As of [email protected], retina spritesheets/templates are supported. See the Retina parameters section for more information.

Cross-platform support

grunt-spritesmith is supported and tested on Windows, Linux, and Mac OS X.

Do you like grunt-spritesmith?

Support us via donations or spread word on Twitter

Breaking changes in 5.0.0

We are normalizing sprite variables even further to convert any non-alphanumeric/non-dash/non-underscore character to a delimiter character (e.g. -). This allows us to support naming retina sprites with @2x suffixes, to prevent regressions like #137.

Breaking changes in 6.0.0

We have moved from [email protected] to [email protected]. This means if you use an custom engine (e.g. gmsmith, canvassmith), then you will need to upgrade it.

npm install my-engine-smith@latest --save-dev

This is to enable usage of streaming outputs from engines.

Getting Started

grunt-spritesmith can be installed via npm: npm install grunt-spritesmith

Then, add and configure it to your Gruntfile.js:

module.exports = function (grunt) {
  // Configure grunt
  grunt.initConfig({
    sprite:{
      all: {
        src: 'path/to/your/sprites/*.png',
        dest: 'destination/of/spritesheet.png',
        destCss: 'destination/of/sprites.css'
      }
    }
  });

  // Load in `grunt-spritesmith`
  grunt.loadNpmTasks('grunt-spritesmith');
};

Run the grunt sprite task:

$ grunt sprite
Running "sprite:all" (sprite) task
Files "destination/of/spritesheet.png", "destination/of/sprites.css" created.

Done, without errors.

Results are a spritesheet:

Spritesheet

and CSS:

.icon-fork {
  background-image: url(spritesheet.png);
  background-position: 0px 0px;
  width: 32px;
  height: 32px;
}
...

Documentation

grunt-spritesmith is a grunt multitask. It supports the following parameters:

  • src String|String[] - Images to use as sprites in spritesheet
    • For example this can be a glob, sprites/*.png or an array of files ['sprite1.png', sprite2.png']
  • dest String - Output location for generated spritesheet
    • For example path/to/output/spritesheet.png
  • destCss String - Output location for generated CSS
    • For example path/to/output/sprites.css
  • imgPath String - Optional override for spritesheet path specified in CSS
    • For example if ../sprite.png is given, then the CSS will have:
      • background-image: url(../sprite.png);
  • padding Number - Padding to place to right and bottom between sprites
    • By default there is no padding
    • An example usage can be found in the Examples section
  • algorithm String - Algorithm to use for positioning sprites in spritesheet
    • By default this is binary-tree which yields the best possible packing
    • An example usage can be found in the Examples section
    • For more algorithm options, see the Algorithms section
  • algorithmOpts Mixed - Options to pass through to algorithm
    • For example we can skip sorting in some algorithms via {algorithmOpts: {sort: false}}
      • This is useful for sprite animations
    • See your algorithm's documentation for available options
  • engine String - spritesmith engine to use
    • By default this is pixelsmith, a node based engine
    • Alternative engines must be installed via npm install
    • An example usage can be found in the Examples section
    • For more engine options, see the Engines section
  • engineOpts Object - Options to pass through to engine for settings
    • For example phantomjssmith accepts timeout via {engineOpts: {timeout: 10000}}
    • See your engine's documentation for available options
  • imgOpts Object - Options to pass through to engine uring export
    • For example gmsmith supports quality via {imgOpts: {quality: 75}}
    • See your engine's documentation for available options
  • cssFormat String - CSS format to use
  • cssTemplate String|Function - CSS template to use for rendering output CSS
    • This overrides cssFormat
    • If a String is provided, it must be a path to a handlebars template
    • If a Function is provided, it must have a signature of function (data)
    • For more templating information, see the Templating section
  • cssHandlebarsHelpers Object - Container for helpers to register to handlebars for our template
    • Each key-value pair is the name of a handlebars helper corresponding to its function
    • For example, {half: function (num) { return num/2; } will add a handlebars helper that halves numbers
  • cssVarMap Function - Mapping function for each filename to CSS variable
  • cssSpritesheetName String - Name to use for spritesheet related variables in preprocessor templates
  • cssOpts Object - Options to pass through to templater

Retina parameters

grunt-spritesmith supports retina spritesheet generation via retinaSrcFilter and retinaDest. If at least one of these is provided, then we will expect the other and enable retina spritesheet generation.

Repeated parameters have the same properties as above but are repeated for clarity with respect to retina spritesheets.

An example retina spritesheet setup can be found in the Examples section.

  • src String|String[] - Images to use for both normal and retina spritesheet
    • For example sprites/*.png should capture sprite1.png and [email protected]
    • These must be ordered such that when the retina images are filtered into a separate array, the normal and retina images will have the same indices
    • We strongly encourage using the @2x suffix over -retina or -2x. There are known ordering issues caused when sharing a - delimiter between sprite names and the retina suffix (see #137)
  • retinaSrcFilter String|String[] - Images to filter out from src for our retina spritesheet
    • This can be a glob as with src (e.g. sprite/*@2x.png)
    • The path/glob used should line up with src (e.g. src: 'sprite/*.png', retinaSrcFilter: 'sprite/*@2x.png')
    • For example sprites/*@2x.png will filter out [email protected] for a separate retina spritesheet
      • Under the hood, we will group sprite1.png and [email protected] as a group of normal/retina sprites
  • retinaDest String - Output location for generated retina spritesheet
  • retinaImgPath - Optional override for retina spritesheet path specified in CSS
  • padding Number - Padding to place to right and bottom between sprites
    • By default there is no padding
    • In retina spritesheets, this number will be doubled to maintain perspective
  • cssFormat String - CSS format to use
  • cssVarMap Function - Mapping function for each filename to CSS variable
    • This will run through normal and retina spritesheets
    • The name used for normal sprites dictates the group name for retina group variables (e.g. $icon-home will have group $icon-home-group)
    • For more information, see Variable mapping
  • cssRetinaSpritesheetName String - Name to use for retina spritesheet related variables in preprocessor templates
  • cssRetinaGroupsName String - Name to use for retina groups related variables in preprocessor templates

Algorithms

Images can be laid out in different fashions depending on the algorithm. We use layout to provide you as many options as possible. At the time of writing, here are your options for algorithm:

top-down left-right diagonal alt-diagonal binary-tree
top-down left-right diagonal alt-diagonal binary-tree

More information can be found in the layout documentation:

https://github.com/twolfson/layout

Templating

The cssTemplate option allows for using a custom template. An example template can be found at:

https://github.com/twolfson/spritesheet-templates/blob/9.3.1/lib/templates/stylus.template.handlebars

The parameters passed into your template are known as data. We add some normalized properties via spritesheet-templates for your convenience.

  • data Object Container for parameters
    • sprites Object[] - Array of sprite information
      • name String - Name of the sprite file (sans extension)
      • x Number - Horizontal position of sprite's left edge in spritesheet
      • y Number - Vertical position of sprite's top edge in spritesheet
      • width Number - Width of sprite
      • height Number - Height of sprite
      • total_width Number - Width of entire spritesheet
      • total_height Number - Height of entire spritesheet
      • image String - Relative URL path from CSS to spritesheet
      • escaped_image String - URL encoded image
      • source_image String - Path to the original sprite file
      • offset_x Number - Negative value of x. Useful to background-position
      • offset_y Number - Negative value of y. Useful to background-position
      • px Object - Container for numeric values including px
        • x String - x suffixed with px
        • y String - y suffixed with px
        • width String - width suffixed with px
        • height String - height suffixed with px
        • total_width String - total_width suffixed with px
        • total_height String - total_height suffixed with px
        • offset_x String - offset_x suffixed with px
        • offset_y String - offset_y suffixed with px
    • spritesheet Object - Information about spritesheet
      • width Number - Width of entire spritesheet
      • total_height Number - Height of entire spritesheet
      • image String - Relative URL path from CSS to spritesheet
      • escaped_image String - URL encoded image
      • px Object - Container for numeric values including px
        • width String - width suffixed with px
        • height String - height suffixed with px
    • spritesheet_info Object - Container for spritesheet metadata and its representation
      • name String - Prefix for spritesheet variables
    • retina_sprites Object[] - Array of retina sprite information
      • This will only be accessible if we are generating a retina spritesheet
      • Properties are the same as sprites (e.g. name, width, source_image)
    • retina_spritesheet Object - Information about retina spritesheet
      • This will only be accessible if we are generating a retina spritesheet
      • Properties are the same as spritesheet (e.g. width, px)
    • retina_spritesheet_info Object - Container for retina_spritesheet metadata and its representation
      • This will only be accessible if we are generating a retina spritesheet
      • name String - Prefix for spritesheet variables
    • retina_groups Object[] - Array of objects that maps to normal and retina sprites
      • This will only be accessible if we are generating a retina spritesheet
        • Object - Container for data about sprite mapping
          • name String - Name to refer to mapping by
          • index Number - Index of corresponding normal/retina sprites from data.sprites/data.retina_sprites
          • normal Object - Normal sprite from data.sprites that corresponds to our mapping
            • This has all the same properties as data.sprites[*] (e.g. name, x, offset_y, px)
          • retina Object - Retina sprite from data.retina_sprites that corresponds to our mapping
            • This has all the same properties as data.retina_sprites[*] (e.g. name, x, offset_y, px)
    • retina_groups_info Object - Optional container for metadata about retina_groups and its representation
      • This will only be accessible if we are generating a retina spritesheet
      • name String - Name for retina_groups
    • options Object - Options passed in via cssOpts in grunt-spritesmith config

An example sprite is

{
  "name": "sprite2",
  "x": 10,
  "y": 20,
  "width": 20,
  "height": 30,
  "total_width": 80,
  "total_height": 100,
  "image": "nested/dir/spritesheet.png",
  "escaped_image": "nested/dir/spritesheet.png",
  "source_image": "path/to/original/sprite.png",
  "offset_x": -10,
  "offset_y": -20,
  "px": {
    "x": "10px",
    "y": "20px",
    "width": "20px",
    "height": "30px",
    "total_width": "80px",
    "total_height": "100px",
    "offset_x": "-10px",
    "offset_y": "-20px"
  }
}

If you are defining a Handlebars template, then you can inherit from an existing template via handlebars-layouts (e.g. {{#extend "scss"}}). An example usage can be found in the Examples section.

Example usages can be found as:

Variable mapping

The cssVarMap option allows customization of the CSS variable names

If you would like to customize CSS selectors in the css template, please see https://github.com/twolfson/spritesheet-templates#css

Your cssVarMap should be a function with the signature function (sprite). It will receive the same parameters as sprites from Templating except for escaped_image, offset_x, offset_y, and px.

// Prefix all sprite names with `sprite-` (e.g. `home` -> `sprite-home`)
cssVarMap: function (sprite) {
  sprite.name = 'sprite_' + sprite.name;
}

// Generates:
// $sprite_fork_x = 0px;
// $sprite_fork_y = 0px;

// As oppposed to default:
// $fork_x = 0px;
// $fork_y = 0px;

Engines

An engine can greatly improve the speed of your build (e.g. canvassmith) or support obscure image formats (e.g. gmsmith).

All spritesmith engines adhere to a common specification:

https://github.com/twolfson/spritesmith-engine-spec

This repository adheres to specification version: 2.0.0

Below is a list of known engines with their tradeoffs:

pixelsmith

pixelsmith is a node based engine that runs on top of get-pixels and save-pixels.

Key differences: Doesn't support uncommon image formats (e.g. tiff) and not as fast as a compiled library (e.g. canvassmith).

phantomjssmith

phantomjssmith is a phantomjs based engine. It was originally built to provide cross-platform compatibility but has since been succeeded by pixelsmith.

Requirements: phantomjs must be installed on your machine and on your PATH environment variable. Visit the phantomjs website for installation instructions.

Key differences: phantomjs is cross-platform and supports all image formats.

canvassmith

canvassmith is a node-canvas based engine that runs on top of Cairo.

Requirements: Cairo and node-gyp must be installed on your machine.

Instructions on how to install Cairo are provided in the node-canvas wiki.

node-gyp should be installed via npm:

npm install -g node-gyp

Key differences: canvas has the best performance (useful for over 100 sprites). However, it is UNIX only.

gmsmith

gmsmith is a gm based engine that runs on top of either Graphics Magick or Image Magick.

Requirements: Either Graphics Magick or Image Magick must be installed on your machine.

For the best results, install from the site rather than through a package manager (e.g. apt-get). This avoids potential transparency issues which have been reported.

Image Magick is implicitly discovered. However, you can explicitly use it via engineOpts

{
  engineOpts: {
    imagemagick: true
  }
}

Key differences: gmsmith allows for configuring image quality whereas others do not.

Examples

Algorithm

In this example, we will use the alt-diagonal algorithm to layout sprites in a non-intersecting manner.

Configuration:

{
  src: ['fork.png', 'github.png', 'twitter.png'],
  dest: 'spritesheet.algorithm.png',
  destCss: 'spritesheet.algorithm.styl',
  algorithm: 'alt-diagonal'
}

Output:

algorithm spritesheet

Engine

In this example, we will use the gmsmith engine to support obscure image formats.

Requirements:

Install gmsmith to our node_modules via npm install.

npm install gmsmith

Alternatively, we can use --save or --save-dev to save to our package.json's dependencies or devDependenices.

npm install gmsmith --save  # Updates {"dependencies": {"gmsmith": "1.2.3"}}
npm install gmsmith --save-dev  # Updates {"devDependencies": {"gmsmith": "1.2.3"}}

Configuration:

{
  src: ['fork.png', 'github.png', 'twitter.png'],
  dest: 'spritesheet.algorithm.png',
  destCss: 'spritesheet.algorithm.styl',
  engine: 'gmsmith'
}

Output:

engine spritesheet

Padding

The padding option allows for inserting spacing between images.

Configuration:

{
  src: ['fork.png', 'github.png', 'twitter.png'],
  dest: 'spritesheet.padding.png',
  destCss: 'spritesheet.padding.styl',
  padding: 20 // Exaggerated for visibility, normal usage is 1 or 2
}

Output:

padding spritesheet

Retina spritesheet

In this example, we will use generate a normal and retina spritesheet via the retinaSrcFilter and retinaDest parameters.

Configuration:

{
  // We have `fork.png`, `[email protected]`, ...
  src: ['fork*.png', 'github*.png', 'twitter*.png'],
  // This will filter out `[email protected]`, `[email protected]`, ... for our retina spritesheet
  //   The normal spritesheet will now receive `fork.png`, `github.png`, ...
  retinaSrcFilter: ['*@2x.png'],
  dest: 'spritesheet.retina.png',
  retinaDest: '[email protected]',
  destCss: 'spritesheet.retina.styl'
}

Normal spritesheet:

Normal spritesheet

Retina spritesheet:

Retina spritesheet

Handlebars template

In this example, we will use cssTemplate with a handlebars template to generate CSS that uses :before selectors.

Template:

{{#sprites}}
.icon-{{name}}:before {
  display: block;
  background-image: url({{{escaped_image}}});
  background-position: {{px.offset_x}} {{px.offset_y}};
  width: {{px.width}};
  height: {{px.height}};
}
{{/sprites}}

Configuration:

{
  src: ['fork.png', 'github.png', 'twitter.png'],
  dest: 'spritesheet.handlebarsStr.png',
  destCss: 'spritesheet.handlebarsStr.css',
  cssTemplate: 'handlebarsStr.css.handlebars'
}

Output:

.icon-fork:before {
  display: block;
  background-image: url(spritesheet.handlebarsStr.png);
  background-position: 0px 0px;
  width: 32px;
  height: 32px;
}
.icon-github:before {
/* ... */

Handlebars inheritance

In this example, we will extend the SCSS template to provide minimal variables. The JSON at the front comes from the original template and is required to provide consistent casing and default options.

Different block sections for each template are documented in:

https://github.com/twolfson/spritesheet-templates

Template:

{
  // Default options
  'functions': true,
  'variableNameTransforms': ['dasherize']
}

{{#extend "scss"}}
{{#content "sprites"}}
{{#each sprites}}
${{strings.name}}: ({{px.x}}, {{px.y}}, {{px.offset_x}}, {{px.offset_y}}, {{px.width}}, {{px.height}}, {{px.total_width}}, {{px.total_height}}, '{{{escaped_image}}}', '{{name}}', );
{{/each}}
{{/content}}
{{#content "spritesheet"}}
${{spritesheet_info.strings.name_sprites}}: ({{#each sprites}}${{strings.name}}, {{/each}});
${{spritesheet_info.strings.name}}: ({{spritesheet.px.width}}, {{spritesheet.px.height}}, '{{{spritesheet.escaped_image}}}', ${{spritesheet_info.strings.name_sprites}}, );
{{/content}}
{{/extend}}

Configuration:

{
  src: ['fork.png', 'github.png', 'twitter.png'],
  dest: 'spritesheet.handlebarsInheritance.png',
  destCss: 'spritesheet.handlebarsInheritance.css',
  cssTemplate: 'handlebarsInheritance.scss.handlebars'
}

Output:

$fork: (0px, 0px, 0px, 0px, 32px, 32px, 64px, 64px, 'spritesheet.handlebarsInheritance.png', 'fork', );
$github: (32px, 0px, -32px, 0px, 32px, 32px, 64px, 64px, 'spritesheet.handlebarsInheritance.png', 'github', );
$twitter: (0px, 32px, 0px, -32px, 32px, 32px, 64px, 64px, 'spritesheet.handlebarsInheritance.png', 'twitter', );
$spritesheet-sprites: ($fork, $github, $twitter, );
$spritesheet: (64px, 64px, 'spritesheet.handlebarsInheritance.png', $spritesheet-sprites, );
/* ... */

Template function

In this example, we will use cssTemplate with a custom function that generates YAML.

Configuration:

// var yaml = require('js-yaml');
{
  src: ['fork.png', 'github.png', 'twitter.png'],
  dest: 'spritesheet.yamlTemplate.png',
  destCss: 'spritesheet.yamlTemplate.yml',
  cssTemplate: function (data) {
    // Convert sprites from an array into an object
    var spriteObj = {};
    data.sprites.forEach(function (sprite) {
      // Grab the name and store the sprite under it
      var name = sprite.name;
      spriteObj[name] = sprite;

      // Delete the name from the sprite
      delete sprite.name;
    });

    // Return stringified spriteObj
    return yaml.safeDump(spriteObj);
  }
}

Output:

fork:
  x: 0
  "y": 0
  width: 32
  height: 32
  source_image: fork.png
  image: spritesheet.yamlTemplate.png
  total_width: 64
  total_height: 64
  escaped_image: spritesheet.yamlTemplate.png
  offset_x: -0.0
  offset_y: -0.0
  px:
    x: 0px
    "y": 0px
    offset_x: 0px
    offset_y: 0px
    height: 32px
    width: 32px
    total_height: 64px
    total_width: 64px
github:
  x: 32
  # ...

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint and test via npm test.

Attribution

GitHub and Twitter icons were taken from Alex Peattie's JustVector Social Icons.

Fork designed by P.J. Onori from The Noun Project

Plus and Equals icons were built using the Ubuntu Light typeface.

License

Copyright (c) 2012 Todd Wolfson

Licensed under the MIT license.

More Repositories

1

sexy-bash-prompt

Bash prompt with colors, git statuses, and git branches.
Shell
1,116
star
2

gulp.spritesmith

Convert a set of images into a spritesheet and CSS variables via gulp
JavaScript
1,080
star
3

spritesmith

Utility that takes sprites and converts them into a stylesheet and its coordinates
JavaScript
898
star
4

google-music-electron

Desktop app for Google Music on top of Electron
JavaScript
265
star
5

restructuredtext-lint

reStructuredText linter
Python
162
star
6

layout

Organize and layout items based on various algorithms
JavaScript
112
star
7

spritesheet-templates

Convert spritesheet data into CSS or CSS pre-processor data
JavaScript
106
star
8

sublime-hooks

Run Sublime commands on common event hooks (e.g. on_new, on_post_save).
Python
96
star
9

grunt-zip

Zip and unzip files via a grunt plugin
JavaScript
89
star
10

File-Watcher

Watch multiple files for changes
JavaScript
88
star
11

gif-encoder

Streaming GIF encoder
JavaScript
82
star
12

grunt-curl

Download files from the internet via grunt.
JavaScript
73
star
13

FindPlusPlus

Find code quickly in Sublime Text.
Python
62
star
14

sublime-files

An extracted backup of Sublime Text's files
Python
60
star
15

karma-electron

Karma launcher and preprocessor for Electron
JavaScript
59
star
16

google-music.js

Browser-side JS library for controlling Google Music
JavaScript
47
star
17

iframe2image

Convert an iframe to an image
JavaScript
47
star
18

grunt-jsmin-sourcemap

Grunt task for JSMin with sourcemap
JavaScript
44
star
19

foundry

Release manager for npm, bower, component, PyPI, git tags, and any command you want
JavaScript
41
star
20

computedStyle

Cross-browser currentStyle/getComputedStyle implementation
JavaScript
40
star
21

css-validator

Validate CSS via W3C's service
JavaScript
40
star
22

grunt-fontsmith

**DEPRECATED** Grunt plugin for composing SVGs into multiple fonts, a character mapping, and CSS variables
JavaScript
38
star
23

jojo

the 10 second blog-engine for hackers (in javascript)
JavaScript
36
star
24

twolfson.com-scripts

Scripts used for bootstrapping and deploying services for twolfson.com and its subdomains
Ruby
32
star
25

reverse-mustache

Reverse templating library for mustache, generating variables from a template's output
JavaScript
30
star
26

gifsockets

Stream never-ending animated GIFs
JavaScript
28
star
27

line-height

Calculate line-height of an HTML element (IE6 compatible)
JavaScript
27
star
28

commander-completion

Shell completion for commander.js
JavaScript
26
star
29

bookmarks

Webpage representing a collection of bookmarks
JavaScript
26
star
30

pixelsmith

Node based engine for `spritesmith` built of top of `get-pixels` and `save-pixels`.
JavaScript
23
star
31

sublime-plugin-tests

Testing framework for Sublime Text plugins
Python
22
star
32

source-map-index-generator

Generate source-maps from index mappings.
JavaScript
21
star
33

icomoon-phantomjs

**DEPRECATED** IcoMoon driver written in PhantomJS
JavaScript
20
star
34

sublime-edit-command-palette

Add/edit commands for your Command Palette
Python
19
star
35

css-controls

Cross-browser stylesheet creation and css rule creation/deletion (includes IE6 support)
JavaScript
18
star
36

dotfiles

A collection of my dotfiles (e.g. `.config`, `.bashrc`)
Shell
15
star
37

vagrant-lime

Vagrantfile for limetext/lime
14
star
38

grunt-html-prettyprinter

Grunt task that beautifies your HTML
JavaScript
13
star
39

twolfson.com

Repository for twolfson.com
JavaScript
13
star
40

function-to-string

Extract parameters and body of a function into strings
JavaScript
12
star
41

sublime-request

Make HTTP requests from Sublime Text
Python
11
star
42

ecma-variable-scope

AST utility to collect scope info for variables
JavaScript
11
star
43

nine-track

Record and playback HTTP requests
JavaScript
10
star
44

node-jsmin-sourcemap

JSMin with sourcemaps!
JavaScript
10
star
45

firefox-bookmarks

Extract information from your Firefox bookmarks
JavaScript
10
star
46

gmsmith

GM engine for spritesmith
JavaScript
10
star
47

record-a-cast

Select and record a portion of your desktop
JavaScript
9
star
48

shenzhen-io-solutions

@twolfson's solutions for Shenzhen I/O
9
star
49

katex-screenshot

Convert KaTeX to images via screenshots
JavaScript
9
star
50

google-music-webkit

Google Music desktop client via nw.js
JavaScript
9
star
51

completion

Completion library for CLI commands
JavaScript
9
star
52

fontsmith

**DEPRECATED** Collect SVGs into multiple fonts and a character code mapping
JavaScript
9
star
53

victorious-git

Play fanfare after triumphing over git conflicts
Shell
8
star
54

paypal-github-button

GitHub styled button for PayPal
JavaScript
8
star
55

spritesmith-engine-test

Common test suite for spritesmith engines
JavaScript
7
star
56

pinboard.js

Library for talking to the Pinboard API
JavaScript
7
star
57

cli-presentation

Give presentations from your terminal
JavaScript
7
star
58

esformatter-var-each

Esformatter plugin that converts comma `var` statements into separate `var` statements
JavaScript
6
star
59

esformatter-phonetic

Esformatter plugin that renames variables and functions to pronounceable names
JavaScript
6
star
60

git-sqwish

Squash commits without repetitive conflicts
Shell
6
star
61

listen-spawn

Run commands in your terminal via HTTP.
JavaScript
6
star
62

Style-Tile-SVG

Style tile template in SVG format
6
star
63

sublime-info

Gather information about Sublime Text
Python
5
star
64

develop-faster-presentation

Presentation on removing the tedium from creating, developing, and publishing repos.
JavaScript
5
star
65

whatsizeismybrowser

Determine the dimensions of your browser
JavaScript
5
star
66

canvassmith

node-canvas engine for spritesmith
JavaScript
5
star
67

json2fontcss

Converter from JSON to font variables for CSS
JavaScript
5
star
68

vagrant-nodebugme

Vagrant for `nodebugme`
Shell
4
star
69

grunt-install-init

Install a grunt init template
JavaScript
4
star
70

pngsmith

png engine for spritesmith
JavaScript
4
star
71

Facebook-Scraper

Javascript project to scrape friend data from Facebook's mobile site
JavaScript
4
star
72

spritesmith-engine-spec

Specification for spritesmith engines
Shell
4
star
73

phantomjssmith

PhantomJS engine for spritesmith
JavaScript
4
star
74

winfiles

Dotfiles variant for Windows
Shell
4
star
75

sublime-snippet-destroyer

Destroy all Sublime Text completions and snippets
Python
4
star
76

Resource-Collector

Collect the urls of all relative resources from a webpage and return them to a callback.
JavaScript
4
star
77

fix-travis-ci

Repair annoying repetitive issues with Travis CI
Shell
4
star
78

sublime-plugin-tests-base

Base layer for testing and assertion frameworks against Sublime Text
Python
3
star
79

Mason.js

HTML power tool that generates robust UI elements near-transparently
JavaScript
3
star
80

single-child

Spawn a single child process which kills itself on restart.
JavaScript
3
star
81

json-content-demux

Break up JSON from content in a JSON-first file
JavaScript
3
star
82

phantomjsify

Browserify transform to fallback node.js basics in PhantomJS
JavaScript
3
star
83

kaleidoscope

View multiple pages at the same time
JavaScript
3
star
84

controlpad

WindowPad functionality for Linux.
JavaScript
3
star
85

CSS-Off--2011-

Website created for the 2011 CSS Off by Unmatched Style
JavaScript
3
star
86

grunt-init-init

Create a grunt template from any grunt template
JavaScript
3
star
87

vagrant-gitlist

Plug and play Vagrantfile for GitList
3
star
88

arduino-playground

Playground environment for one-offs as I learn Arduino and electronics in general
C++
2
star
89

multi-image-mergetool

Resolve multiple image conflicts at the same time
JavaScript
2
star
90

sublime-installer

Shell script to install Sublime Text 2 and 3
Shell
2
star
91

object-fusion2

Another way to combine outline and content into an object.
JavaScript
2
star
92

sublime-js-var-shortcuts

Insert and delete shortcuts for JavaScript variables in Sublime Text
Python
2
star
93

gifsockets-middleware

Set of HTTP middlewares for gifsockets
JavaScript
2
star
94

ecma-scopes

Listing of block and lexical scope names for ECMAScript AST
JavaScript
2
star
95

foundry-release-git

git release library for foundry
JavaScript
2
star
96

trunkata

Truncation utility which preserves HTML content and can truncate by lines.
JavaScript
2
star
97

IndexedDB-Editor

Indexed DB Editor for MDN Dev Derby December 2011
2
star
98

lantern-wall

Documentation for a glowing lantern wall
C++
2
star
99

phantomjs-pixel-server

PhantomJS server that converts canvas actions into pixels
JavaScript
2
star
100

fs-memory-store

Filesystem store with in-memory cache
JavaScript
2
star