利用uncss工具,轻松去除页面无用样式!
发表时间: 2023-09-17 07:35
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
UnCSS 是一个从样式表中删除未使用的 CSS 的工具,可以跨多个文件工作,并支持 Javascript 注入的 CSS。
UnCSS 删除未使用规则的过程如下:
但是使用 Uncss 需要注意以下几点:
目前 uncss 在 Github 上通过 MIT 协议开源,有超过 9.3k 的 star,194k 的项目依赖量,是一个值得关注的前端开源项目。
下面是在 Node.js 环境中使用 uncss 的示例:
var uncss = require('uncss');var files = ['my', 'array', 'of', 'HTML', 'files', 'or', 'http://urls.com'], options = { banner: false, csspath: '../public/css/', htmlroot: 'public', ignore: ['#added_at_runtime', /test\-[0-9]+/], ignoreSheets: [/fonts.googleapis/], inject: function (window) { window.document .querySelector('html') .classList.add('no-csscalc', 'csscalc'); }, jsdom: { userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X)', }, media: ['(min-width: 700px) handheld and (orientation: landscape)'], raw: 'h1 { color: green }', report: false, strictSSL: true, stylesheets: [ 'lib/bootstrap/dist/css/bootstrap.css', 'src/public/css/main.css', ], timeout: 1000, uncssrc: '.uncssrc', userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X)', };uncss(files, options, function (error, output) { console.log(output);});/* Look Ma, no options! */uncss(files, function (error, output) { console.log(output);});/* Specifying raw HTML */var rawHtml = '...';uncss(rawHtml, options, function (error, output) { console.log(output);});
值得一提的是,UnCSS 还可以与其他 JavaScript 构建系统结合使用,例如: Grunt、Broccoli 或 Gulp,只需要安装特定的库即可。
在 CLI 环境中使用命令如下:
Usage: uncss [options] <file or URL, ...> e.g. uncss https://getbootstrap.com/docs/3.3/examples/jumbotron/ > stylesheet.cssOptions: -h, --help output usage information -V, --version output the version number -i, --ignore <selector, ...> Do not remove given selectors -m, --media <media_query, ...> Process additional media queries -C, --csspath <path> Relative path where the CSS files are located -s, --stylesheets <file, ...> Specify additional stylesheets to process -S, --ignoreSheets <selector, ...> Do not include specified stylesheets -r, --raw <string> Pass in a raw string of CSS -t, --timeout <milliseconds> Wait for JS evaluation -H, --htmlroot <folder> Absolute paths' root location -u, --uncssrc <file> Load these options from <file> -n, --noBanner Disable banner -a, --userAgent <string> Use a custom user agent string -I, --inject <file> Path to javascript file to be executed before uncss runs -o, --output <file> Path to write resulting CSS to
请注意,可以将本地文件路径(由 glob 处理)和 URL 传递给程序。
/* uncss:ignore */.selector1 { /* this rule will be ignored */}.selector2 { /* this will NOT be ignored */}/* uncss:ignore start *//* all rules in here will be ignored *//* uncss:ignore end */
https://github.com/uncss/uncss
https://m.youtube.com/watch?v=DX7McYRGJ8o
https://uncss-online.com/