Skip to content

Parse CSS and add vendor-prefixed CSS properties using the Can I Use database. Based on Autoprefixer.

License

Notifications You must be signed in to change notification settings

robertwbradford/grunt-autoprefixer

 
 

Repository files navigation

grunt-autoprefixer

Build Status Dependency Status Built with Grunt

Autoprefixer parses CSS and adds vendor-prefixed CSS properties using the Can I Use database.

Getting Started

This plugin requires Grunt ~0.4.0

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-autoprefixer --save-dev

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

grunt.loadNpmTasks('grunt-autoprefixer');

The "autoprefixer" task

Overview

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

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

Options

options.browsers

Type: Array Default value: an array with default browsers

You can specify browsers actual for your project using this option:

options: {
  browsers: ['last 2 versions', 'ie 8', 'ie 9']
}

Or using a global config file named browserslist at the root of your project:

# Browsers that we support

> 5% in US
Last 2 versions

Read more about browserslist here.

options.cascade

Type: Boolean Default value: true

Pass false to disable ‘cascade’ indentation. Read more here.

options.remove

Type: Boolean Default value: true

Pass false to disable outdated prefixes cleaning. Read more here.

options.diff

Type: Boolean|String Default value: false

Set it to true if you want to get an output patch file:

options: {
  diff: true // or 'custom/path/to/file.css.patch'
}

Also you can specify a path where to save this file. More examples in Gruntfile.

options.map

Type: Boolean|Object Default value: false

If the map option isn't defined or is set to false, Autoprefixer will neither create nor update a sourcemap.

If true is specified, Autoprefixer will try to find a sourcemap from a previous compilation step using an annotation comment (e.g. from Sass) and create a new sourcemap based on the found one (or just create a new inlined sourcemap). The created sourcemap can be either a separate file or an inlined map depending on what the previous sourcemap was.

You can gain more control over sourcemap generation by setting an object to the map option:

  • prev (string or false): a path to a directory where a previous sourcemap is (e.g. path/). By default, Autoprefixer will try to find a previous sourcemap using a path from the annotation comment (or using the annotation comment itself if the map is inlined). You can also set this option to false to delete the previous sourcemap.
  • inline (boolean): whether a sourcemap will be inlined or not. By default, it will be the same as a previous sourcemap or inlined.
  • annotation (string): set this option to URL path you wish the annotation comment to be e.g. path/file.css.map (by default, Autoprefixer will save your sourcemap to a directory where you save CSS). This option requires inline to be false or undefined.
  • sourcesContent (boolean): whether original contents (e.g. Sass sources) will be included to a sourcemap. By default, Autoprefixer will add contents only for new sourcemaps or if a previous sourcemap has them.

options.safe

Type: Boolean Default value: false

Enable or disable PostCSS safe mode.

options: {
  safe: true
}

Usage Examples

grunt.initConfig({

  autoprefixer: {

    options: {
      // Task-specific options go here.
    },

    // prefix the specified file
    single_file: {
      options: {
        // Target-specific options go here.
      },
      src: 'src/css/file.css',
      dest: 'dest/css/file.css'
    },

    // prefix all files
    multiple_files: {
      files: [{
        expand: true,
        flatten: true,
        src: 'src/css/*.css', // -> src/css/file1.css, src/css/file2.css
        dest: 'dest/css/' // -> dest/css/file1.css, dest/css/file2.css
      }]
    },

    // if you have specified only the `src` param, the destination will be set automatically,
    // so source files will be overwritten
    no_dest: {
      src: 'dest/css/file.css' // globbing is also possible here
    },

    diff: {
        options: {
            diff: true
        },
        src: 'src/css/file.css',
        dest: 'dest/css/file.css' // -> dest/css/file.css, dest/css/file.css.patch
    },

    sourcemap: {
        options: {
            map: true
        },
        src: 'src/css/file.css',
        dest: 'dest/css/file.css' // -> dest/css/file.css, sourcemap is inlined
    },

    sourcemap_separate: {
        options: {
            map: {
                inline: false
            }
        },
        src: 'src/css/file.css',
        dest: 'dest/css/file.css' // -> dest/css/file.css, dest/css/file.css.map
    },
  }

});

Check out project's Gruntfile.js for more examples.

Updating prefixes database

$ npm update caniuse-db

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.

About

Parse CSS and add vendor-prefixed CSS properties using the Can I Use database. Based on Autoprefixer.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 75.7%
  • CSS 24.3%