#html5ever #minify #minify-html #html5 #html #extension #html-css

html5ever_ext

这是对 html5ever crate 的 RcDom 和 Node 结构体的非官方扩展集合,包括一个 HTML5 序列化器压缩器 和对 CSS 匹配 的支持。

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

Download history 66/week @ 2024-04-01 90/week @ 2024-07-01

90 每月下载次数
css-purify 中使用

MIT 许可证

120KB
3K SLoC

html5ever_ext

这是对 html5ever crate 的 RcDom 和 Node 结构体的非官方扩展集合,包括一个 HTML5 序列化器压缩器 和对 CSS 匹配 的支持。

查看文档

许可协议

本项目的许可证是 MIT。


lib.rs:

html5_ext

这是对 html5ever crate 的 RcDom 和 Node 结构体的非官方扩展集合,包括一个 HTML5 序列化器压缩器 和对 CSS 匹配 的支持。

它重新导出 csshtml5ever 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
})

处理节点

使用 NodeExtMinifySelectableQualNameExt 特性。

依赖项

~5MB
~107K SLoC