1337 个版本 (284 个重大更新)
新 0.284.1 | 2024年8月19日 |
---|---|
0.283.1 | 2024年8月16日 |
0.282.3 | 2024年7月24日 |
0.273.23 | 2024年3月26日 |
0.13.0 | 2021年3月31日 |
#1260 in 网页编程
每月下载量 10,484
用于 32 个 Crates (直接使用 23 个)
9.5MB
245K SLoC
测试
测试/执行
所有命名为 exec.js
或 exec.ts
的文件都将执行,测试系统将确保原始源代码和转换后的源代码在控制台输出相同的结果。
您可以使用 ./scripts/check-issues.sh
自动取消忽略已修复的测试。
lib.rs
:
swc 项目的主体 Crates。
自定义
这是在 swc 上构建自定义构建工具的文档。
依赖项版本管理
swc
包含 swc_css,它重新导出所需的模块。
测试
参见 [测试] 和 swc_ecma_transforms_testing。
自定义 JavaScript 转换
什么是 JsWord?
它基本上是一个内部字符串。参见 [swc_atoms]。
在 JsWord 与 String 之间选择
如果您打算将其存储在 AST 节点中,应首选 JsWord。
参见 [swc_atoms] 获取详细说明。
Fold 与 VisitMut 与 Visit 的比较
参见 [swc_visit] 获取详细说明。
变量管理(作用域)
参见 swc_ecma_transforms_base::resolver::resolver_with_mark。
标识符的工作方式
参见 swc_ecma_ast::Ident 或 swc_ecma_transforms_base::resolver::resolver_with_mark 上的文档。
比较两个标识符
参见 swc_ecma_utils::Id。您可以使用 swc_ecma_utils::IdentLike::to_id 从 swc_ecma_ast::Ident 中提取重要部分。
创建唯一标识符
参见 swc_ecma_utils::private_ident。
添加语句
如果您想向文件开头添加语句,可以使用 swc_ecma_utils::prepend_stmts 或 swc_ecma_utils::prepend(如果 len == 1
)。
这些方法知道 "use strict"
指令应该在文件开头,并将语句插入到指令之后。
提高可读性
每个部分都有自己相应的文档。
-
如果您使用运算符创建或绑定 swc_ecma_ast::Expr,可以使用 swc_ecma_ast::op。
-
如果您想创建 swc_ecma_ast::CallExpr,可以使用 swc_ecma_utils::ExprFactory::as_callee 来创建
callee
。 -
如果您想创建 swc_ecma_ast::CallExpr 或 swc_ecma_ast::NewExpr,可以使用 swc_ecma_utils::ExprFactory::as_arg 来创建参数。
-
如果您想创建所有标识符都是静态的 swc_ecma_ast::MemberExpr(例如
Object.prototype.hasOwnProperty
),可以使用 swc_ecma_utils::member_expr。 -
如果您想创建 swc_ecma_ast::MemberExpr,可以使用 swc_ecma_utils::ExprFactory::as_obj 来创建对象字段。
减小二进制大小
访问者会扩展成很多代码。您可以通过使用宏如
注意,这会使与 TypeScript 相关的节点不被处理,但通常没问题,因为 typescript::strip
在开始时被调用,并且它会移除 TypeScript 特定的节点。
迁移 babel 的 expr.evaluate()
依赖关系
~17–36MB
~614K SLoC