css-tree

中文文档
3.2.1发布于 2026/03/05MITESM + CJS近 30 天下载 5.2亿

CSS工具集:基于规范和浏览器实现的快速详细解析器(CSS→AST)、遍历器(AST遍历)、生成器(AST→CSS)和词法分析器(验证和匹配)

中文使用文档
文档目录10 节
  1. 特性
  2. 使用csstreet的项目
  3. 文档
  4. 工具
  5. 相关项目
  6. 用法
  7. 出口
  8. 在浏览器中使用
  9. 顶层API
  10. 许可证
CSSTree logo

CSSTree

NPM version Build Status Coverage Status NPM Downloads Twitter

CSSTree是一个CSS工具集: 快 基于规范和浏览器实现的详细解析器(CSS→AST)、遍历器(AST遍历)、生成器(AST→CSS)和词法分析器(验证和匹配)。主要目标是高效且符合W3C规范,重点是CSS分析和源到源转换任务。

特性

  • 具有可调整的详细级别的详细解析

    默认情况下,CSSTree尽可能详细地解析CSS,即每个逻辑部分都用自己的AST节点表示(参见 AST格式 对于所有可能的节点类型)。解析细节级别可以通过以下方式更改 解析器选项例如,您可以禁用对组件部件的选择器或声明值的解析。

  • 能容忍错误的

    解析器的行为如下 规范说:“当CSS中出现错误时,解析器会尝试优雅地恢复,在返回正常解析之前只丢弃最少量的内容”。解析器与规范的唯一不同之处在于,它不会丢弃不良内容,而是将其包装在特殊的节点类型中(Raw),以便稍后处理。

  • 快速高效

    CSSTree的创建重点是性能和有效的内存消耗。因此,它的 最快的CSS解析器之一 目前为止。

  • 语法验证

    内置词法分析器可以根据W3C定义的语法测试CSS。CSSTree使用 mdn /数据 作为lexer字典的基础,并使用特定于供应商的遗留语法对其进行扩展。Lexer目前只能检查声明值和at-rules,但这个特性将来会扩展到CSS的其他部分。

使用csstreet的项目

  • 苗条的 -控制论增强的web应用程序
  • SVGO -优化SVG文件的Node.js工具
  • CSSO - CSS微缩与结构优化
  • NativeScript NativeScript允许你直接从JavaScript访问本地api
  • react-native-svg -用于React Native, React Native Web和纯React Web项目的SVG库
  • 《阁楼》 —关键路径CSS生成器
  • 位 - Bit是组件协作的平台
  • 和更多的……

文档

工具

用法

使用npm安装:

npm install css-tree

基本用法:

import * as csstree from 'css-tree';

// parse CSS to AST
const ast = csstree.parse('.example { world: "!" }');

// traverse AST and modify it
csstree.walk(ast, (node) => {
    if (node.type === 'ClassSelector' && node.name === 'example') {
        node.name = 'hello';
    }
});

// generate CSS from AST
console.log(csstree.generate(ast));
// .hello{world:"!"}

语法匹配:

// parse CSS to AST as a declaration value
const ast = csstree.parse('red 1px solid', { context: 'value' });

// match to syntax of `border` property
const matchResult = csstree.lexer.matchProperty('border', ast);

// check first value node is a <color>
console.log(matchResult.isType(ast.children.first, 'color'));
// true

// get a type list matched to a node
console.log(matchResult.getTrace(ast.children.first));
// [ { type: 'Property', name: 'border' },
//   { type: 'Type', name: 'color' },
//   { type: 'Type', name: 'named-color' },
//   { type: 'Keyword', name: 'red' } ]

出口

是否有可能只导入库中所需的部分,如解析器或walker。这对于加载时间或包大小优化可能很有用。

import * as tokenizer from 'css-tree/tokenizer';
import * as parser from 'css-tree/parser';
import * as walker from 'css-tree/walker';
import * as lexer from 'css-tree/lexer';
import * as definitionSyntax from 'css-tree/definition-syntax';
import * as data from 'css-tree/definition-syntax-data';
import * as dataPatch from 'css-tree/definition-syntax-data-patch';
import * as utils from 'css-tree/utils';

在浏览器中使用

bundle可以在浏览器中使用:

  • dist/csstree.js 与…一起生活 csstree 随着全球
<script src="node_modules/css-tree/dist/csstree.js"></script>
<script>
  csstree.parse('.example { color: green }');
</script>
  • dist/csstree.esm.js -缩小的ES模块
<script type="module">
  import { parse } from 'node_modules/css-tree/dist/csstree.esm.js'
  parse('.example { color: green }');
</script>

CDN服务之一 unpkg 或 jsDelivr 可以使用。默认情况下(对于短路径),ESM版本是公开的。对于IIFE版本,应该指定bundle的完整路径:

<!-- ESM -->
<script type="module">
  import * as csstree from 'https://cdn.jsdelivr.net/npm/css-tree';
  import * as csstree from 'https://unpkg.com/css-tree';
</script>

<!-- IIFE with an export to global -->
<script src="https://cdn.jsdelivr.net/npm/css-tree/dist/csstree.js"></script>
<script src="https://unpkg.com/css-tree/dist/csstree.js"></script>

顶层API

API map

许可证

麻省理工学院

版本与发布记录

css-tree 共发布 61 个版本,首次发布于 2016/09/13;过去 12 个月发布了 2 个版本。

版本发布日期距今
3.2.1latest2026/03/058 个月前
3.2.02026/03/058 个月前
3.1.02024/12/071.9 年前
3.0.12024/11/022 年前
3.0.02024/09/122 年前
2.3.12022/12/153 年前

关于 css-tree 的常见问题

css-tree 是什么?

CSS工具集:基于规范和浏览器实现的快速详细解析器(CSS→AST)、遍历器(AST遍历)、生成器(AST→CSS)和词法分析器(验证和匹配)

如何安装 css-tree?

在项目目录运行 npm install css-tree,或使用 pnpm add / yarn add / bun add。

css-tree 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/css-tree 是否存在。

css-tree 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

css-tree 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

css-tree 可以商用吗?

css-tree 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

css-tree 的下载量有多少?

根据 npm 官方下载统计,css-tree 在 2026/10/05 – 2026/11/03 这 30 天内被下载 522,254,663 次,日均约 17,408,489 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

css-tree 还在维护吗?

最新版本 3.2.1 发布于 2026/03/05(8 个月前);至今共发布 61 个版本,其中过去 12 个月发布了 2 个;首次发布于 2016/09/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。