grunt-color-svg-icons-hiulit

Color svg icons.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
grunt-color-svg-icons-hiulit
001.1.07 years ago7 years agoMinified + gzip package size for grunt-color-svg-icons-hiulit in KB

Readme

grunt-color-svg-icons
Color svg icons.

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-color-svg-icons --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-color-svg-icons');

The "colorsvgicons" task

Overview

In your project's Gruntfile, add a section named color_svg_icons to the data object passed into grunt.initConfig().
grunt.initConfig({
  color_svg_icons: {
    svg_options: {
      options: {
        colors: {
          red: '#ff0000',
          blue: '#0000ff'
        }
      },
      files: {
        'dest': ['src/svgs/*']
      }
    }
  }
});

Options

options.colors

Type: Object
Properties of the colors object will be used to get the value of color to set the svg icon to and name will be used as a prefix to resulting files.
options: {
  colors: {
    red: '#ff0000',
    blue: '0000ff'
  }
}

So the resulting files would be red_whatever-icon.svg and blue_whatever-icon.svg.
Reserved words and link states
You can use the reserved color name "base" to set a default color. This color name won't be outputted.
You can also use :hover as a color name, as well as :active and :focus. These will be outputted just like any other color.
options: {
  colors: {
    base: '#ff0000',
    hover: '0000ff'
  },
  preprend: false
}

So the resulting files would be whatever-icon.svg and whatever-icon_hover.svg.
Notice the usage of prepend: false. See options.prepend below.
This is pretty useful when using in conjunction with a spriting plugin, such as grunt-dr-svg-sprites
, which creates CSS classes from the files names.
So, with the given options above, the CSS result would be:
.whatever-icon {
  background-position: 0 0;
  height: 20px;
  width: 20px;
}

.whatever-icon:hover {
  background-position: 20px 0;
  height: 20px;
  width: 20px;
}

options.prepend

Type: Boolean Default: true
You can choose to append (use as a suffix) the color's name instead of prepending it, which is the default behaviour.
Just add:
options: {
  prepend: false
}

So, in this case:
options: {
  colors: {
    red: '#ff0000',
    blue: '0000ff'
  },
  prepend: false
}

You'll get whatever-icon_red and whatever-icon_blue instead of red_whatever-icon and blue_whatever-icon.
This is useful when you need BEM-style names or when you are using the link state behaviour mentioned before.

options.stateToken

Type: String Default: _
options: {
  stateToken: '-'
}

Usage Examples

In this example SVGO.optimize will be run on all svgs in the src/svgs/* path, then color will be set to given CSS hex value, and this result saved in dest folder with property name as the prefix.
grunt.initConfig({
  color_svg_icons: {
    svg_options: {
      options: {
        colors: {
          red: '#ff0000',
          blue: '#0000ff'
        }
      },
      files: {
        'dest': ['src/svgs/*']
      }
    }
  }
});

Contributing

In lieu of a formal style guide, 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

v1.1.0 (2016-27-07)

  • Update peerDependencies to support Grunt 1.0 #1
  • Fill attribute for ellipse #2

v1.0.0 (2015-11-03)

  • Created fork.
  • Added extra functionalities over the main project.