21 个版本
使用旧 Rust 2015
0.21.20 | 2017年12月4日 |
---|---|
0.21.19 | 2017年12月4日 |
0.21.18 | 2017年11月21日 |
#7 in #minify-html
90 每月下载次数
在 css-purify 中使用
120KB
3K SLoC
html5ever_ext
这是对 html5ever crate 的 RcDom 和 Node 结构体的非官方扩展集合,包括一个 HTML5 序列化器压缩器 和对 CSS 匹配 的支持。
查看文档。
许可协议
本项目的许可证是 MIT。
lib.rs
:
html5_ext
这是对 html5ever crate 的 RcDom 和 Node 结构体的非官方扩展集合,包括一个 HTML5 序列化器压缩器 和对 CSS 匹配 的支持。
它重新导出 css
和 html5ever
crate,以及隐藏在 ::html5ever::markup5ever::rcdom
模块中的有用的 DOM 类型。
操作指南
加载和压缩 HTML5
extern crate html5_ext;
use ::html5ever_ext::RcDom;
use ::html5ever_ext::RcDomExt;
use ::html5ever_ext::Minify;
let rc_dom = RcDom::from_file_path_verified_and_stripped_of_comments_and_processing_instructions_and_with_a_sane_doc_type("/path/to/document.html").expect("invalid HTML");
rc_dom.minify_to_file_path();
在 Minify
上有更多方法可用,可以将内容压缩到字节数组或实现 Write
的泛型写入器。
为了更精细的控制,例如序列化多个节点图,请直接使用结构体 UltraMinifyingHtmlSerializer
。
匹配 CSS 选择器
extern crate html5_ext;
use ::html5ever_ext::RcDom;
use ::html5ever_ext::RcDomExt;
use ::html5ever_ext::parse_css_selector;
use ::html5ever_ext::Selectable;
use ::html5ever_ext::Minify;
let rc_dom = RcDom::from_file_path_verified_and_stripped_of_comments_and_processing_instructions_and_with_a_sane_doc_type("/path/to/document.html").expect("invalid HTML");
let selector = parse_css_selector("p.myclass").unwrap();
assert!(!rc_dom.matches(&selector));
rc_dom.find_all_matching_child_nodes_depth_first_including_this_one(&selector, |node|
{
//Minify is implemented on node.children as well as node and rc_dom.
eprintln!("{}", node.children.debug_string());
const SHORTCUT: bool = false;
SHORTCUT
})
处理节点
使用 NodeExt
,Minify
,Selectable
和 QualNameExt
特性。
依赖项
~5MB
~107K SLoC