Remove unused CSS selectors.
Remove unused CSS with UnCSS.
If you have any difficulties with the output of this plugin, please use the UnCSS tracker.
Install via npm:
npm install gulp-uncss --save-dev
Single files, globbing patterns and URLs are all supported by gulp-uncss, and can be mixed and matched:
var gulp = require'gulp';var uncss = require'gulp-uncss';gulptask'default'return gulpsrc'site.css'pipeuncsshtml: 'index.html' 'posts/**/*.html' ''pipegulpdest'./out';;
gulp-uncss can also be used in a pipeline that involves CSS pre-processing. Utilising many transforms on a single file is one of gulp's strengths:
var gulp = require'gulp';var uncss = require'gulp-uncss';var sass = require'gulp-sass';var concat = require'gulp-concat';var csso = require'gulp-csso';gulptask'default'return gulpsrc'styles/**/*.scss'pipesasspipeconcat'main.css'pipeuncsshtml: 'index.html' 'posts/**/*.html' ''pipecssopipegulpdest'./out';;
In just a few lines, we compiled SCSS source into a single file, removed unused CSS and minified the output!
Please see the UnCSS documentation for all of the options you can use. Some of them aren't as necessary when using gulp-uncss, because the CSS to analyse comes from the stream rather than the HTML files. The main options you will likely be using are:
An array which can contain an array of files relative to your
gulpfile.js, and which can also contain URLs. Note that if you are to pass URLs here, then the task will take much longer to complete. If you want to pass some HTML directly into the task instead, you can specify it here as a string.
Selectors that should be left untouched by UnCSS as it can't detect user interaction on a page (hover, click, focus, for example). Both literal names and regex patterns are recognized.
Specify how long to wait for the JS to be loaded.
options.ignoreSheets is already defined for you. gulp-uncss will only process CSS files in the stream.
Pull requests are welcome. If you add functionality, then please add unit tests to cover it.
MIT © Ben Briggs