#css-parser #css #minify #optimization #parser

css-minify

基于 nom 的 CSS 解析器和压缩器

13 个不稳定版本 (4 个重大更改)

新增 0.5.2 2024 年 8 月 17 日
0.5.1 2024 年 8 月 17 日
0.4.2 2024 年 8 月 17 日
0.3.1 2022 年 11 月 22 日
0.1.1 2021 年 1 月 23 日

#224 in 解析器实现

Download history 637/week @ 2024-05-01 691/week @ 2024-05-08 642/week @ 2024-05-15 532/week @ 2024-05-22 641/week @ 2024-05-29 500/week @ 2024-06-05 552/week @ 2024-06-12 566/week @ 2024-06-19 512/week @ 2024-06-26 265/week @ 2024-07-03 421/week @ 2024-07-10 395/week @ 2024-07-17 375/week @ 2024-07-24 325/week @ 2024-07-31 704/week @ 2024-08-07 1145/week @ 2024-08-14

2,594 每月下载量
用于 24 个 crate(直接使用 6 个)

Apache-2.0/MIT

110KB
3K SLoC

CSS 压缩

基于 nom 的 CSS 压缩库。该库解析 CSS 输入,压缩它并对其应用一些基于级别的优化。

use css_minify::optimizations::{Minifier, Level};
fn main() {
    assert_eq!(
        Minifier::default().minify(
            r#"
                 #some_id, input {
                     padding: 5px 3px; /* Mega comment */
                     color: white;
                 }
                 
                 
                 /* this is are test id */
                 #some_id_2, .class {
                     padding: 5px 4px; /* Mega comment */
                     Color: rgb(255, 255, 255);
                 }
             "#,
            Level::Three
        ),
        Ok("#some_id,input{padding:5px 3px;color:white}#some_id_2,.class{padding:5px 4px;color:#fff}".into())
    )
}

CSS 压缩器

Web 版本也提供 https://css-minify.panfilov.tech/

css-minify 库的 CLI 包装器。

css-minifier 0.1

USAGE:
    css-minifier [OPTIONS] --input <input>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -i, --input <input>      css which will be minified
    -l, --level <level>      Optimization levels:
                                 0 - Without optimizations 
                                 1 - Remove whitespaces, replace `0.` to `.` and others non
                             dangerous optimizations
                                 2 - Level One + shortcuts (margins, paddings, backgrounds and etc).
                             In mostly cases it's non dangerous optimizations, but be careful
                                 3 - Level Two + merge @media and css blocks with equal
                             screen/selectors. It is a danger optimizations, because ordering of
                             your css code may be changed.
                              [default: 1]
    -o, --output <output>    output to optimized variant

示例

css-minifier -i "~/test.css" -o "~/test.min.css" -l 3

依赖项

~1.9–2.8MB
~53K SLoC