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-svg-sprite

v2.0.2

Published

SVG sprites & stacks galore — Grunt plugin wrapping around svg-sprite that reads in a bunch of SVG files, optimizes them and creates SVG sprites and CSS resources in various flavours

Downloads

28,919

Readme

grunt-svg-sprite

npm version npm downloads Build Status

grunt-svg-sprite is a Grunt plugin wrapping around svg-sprite which takes a bunch of SVG files, optimizes them and bakes them into SVG sprites of several types:

  • Traditional CSS sprites for use as background images,
  • CSS sprites with pre-defined <view> elements, useful for foreground images as well,
  • inline sprites using the <defs> element,
  • inline sprites using the <symbol> element
  • and SVG stacks.

Features & configuration? → svg-sprite

This document covers only Grunt specific installation and configuration aspects. For a full list of features and options, please see the svg-sprite manual.

Getting Started

This plugin requires Grunt >=0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-svg-sprite --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

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

The «svg_sprite» task

Overview

In your project's Gruntfile, add a section named svg_sprite to the data object passed into grunt.initConfig().

grunt.initConfig({
  svg_sprite: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  }
});

The task-specific options are optional and affect all defined targets. You may define as many targets (your_target) as you want.

Targets

In the simplest case an «svg_sprite» target looks like this:

your_target: {
  src: ['path/to/assets/**/*.svg'],
  dest: 'path/to/css/dir',
  options: {
    // Target-specific options
  }
},

However, as the path/to/assets would become part of the shape IDs, you will most likely want to add a working directory in most cases:

your_target: {
  expand: true,
  cwd: 'path/to/assets',
  src: ['**/*.svg'],
  dest: 'path/to/css/dir',
  options: {
    // Target-specific options
  }
},

Options

As target-specific options you may provide a main configuration object as described in the svg-sprite manual. Configuration-wise, svg-sprite and grunt-svg-sprite differ only in one respect:

options.dest → dest

Type: String Default value: '.'

Instead of being nested inside the options object, svg-sprite's dest property gets promoted one level up and becomes part of the Grunt target configuration itself (see examples above).

Usage Examples

Basic example

In this very basic example, mostly default settings will be applied to create a traditional CSS sprite (bundle of SVG sprite and CSS stylesheet).

grunt.initConfig({
  svg_sprite: {
    basic: {
      // Target basics
      expand: true,
      cwd: 'assets',
      src: ['**/*.svg'],
      dest: 'out',
      // Target options
      options: {
        mode: {
          css: { // Activate the «css» mode
            render: {
              css: true // Activate CSS output (with default options)
            }
          }
        }
      }
    }
  }
});

The following files and directories are created:

out/
├─ css/
│  ├─ sprite.css
│  ├─ svg/
│  │  ├─ sprite.css-495d2010.svg

The cryptical looking part in the SVG's file name is the result of svg-sprite's cache busting feature which is enabled by default for CSS sprites. We'll turn this off in the next example.

More complex example

The following example is a little more complex:

  • We'll create a «view» CSS sprite and a «symbol» sprite in one go.
  • Instead of CSS, we'll render a Sass stylesheet resource for the «view» sprite.
  • We'll turn off cache busting for the «view» sprite and create extra CSS rules specifying each shape's dimensions.
  • We'll downscale the SVG shapes to 32×32 pixels if necessary and add 10 pixels padding to all sides.
  • We'll keep the intermediate SVG source files.
grunt.initConfig({
  svg_sprite: {
    complex: {
      // Target basics
      expand: true,
      cwd: 'assets',
      src: ['**/*.svg'],
      dest: 'out',
      // Target options
      options: {
        shape: {
          dimension: {      // Set maximum dimensions
            maxWidth: 32,
            maxHeight: 32
          },
          spacing: {        // Add padding
            padding: 10
          },
          dest: 'out/intermediate-svg'  // Keep the intermediate files
        },
        mode: {
          view: {           // Activate the «view» mode
            bust: false,
            render: {
              scss: true    // Activate Sass output (with default options)
            }
          },
          symbol: true      // Activate the «symbol» mode
        }
      }
    }
  }
});

The following files and directories are created:

out/
├─ intermediate-svg
│  ├─ weather-clear.svg
│  ├─ weather-snow.svg
│  ├─ weather-storm.svg
├─ symbol/
│  ├─ svg/
│     ├─ sprite.symbol.svg
├─ view/
│  ├─ sprite.scss
│  ├─ svg/
│     ├─ sprite.view.svg

Advanced features

For more advanced features like

please refer to the svg-sprite manual.

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 and test your code using Grunt.

Changelog

Please refer to the GitHub releases for a complete release history.

Legal

Copyright © 2018 Joschi Kuphal [email protected] / @jkphl. grunt-svg-sprite is licensed under the terms of the MIT license. The contained example SVG icons are part of the Tango Icon Library and belong to the Public Domain.