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 网页编程

Download history 2049/week @ 2024-05-04 2123/week @ 2024-05-11 1519/week @ 2024-05-18 1758/week @ 2024-05-25 2225/week @ 2024-06-01 2273/week @ 2024-06-08 2214/week @ 2024-06-15 1584/week @ 2024-06-22 1853/week @ 2024-06-29 1756/week @ 2024-07-06 2546/week @ 2024-07-13 1946/week @ 2024-07-20 2729/week @ 2024-07-27 1921/week @ 2024-08-03 2534/week @ 2024-08-10 3041/week @ 2024-08-17

每月下载量 10,484
用于 32 个 Crates (直接使用 23 个)

Apache-2.0

9.5MB
245K SLoC

测试

测试/执行

所有命名为 exec.jsexec.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::Identswc_ecma_transforms_base::resolver::resolver_with_mark 上的文档。

比较两个标识符

参见 swc_ecma_utils::Id。您可以使用 swc_ecma_utils::IdentLike::to_idswc_ecma_ast::Ident 中提取重要部分。

创建唯一标识符

参见 swc_ecma_utils::private_ident

添加语句

如果您想向文件开头添加语句,可以使用 swc_ecma_utils::prepend_stmtsswc_ecma_utils::prepend(如果 len == 1)。

这些方法知道 "use strict" 指令应该在文件开头,并将语句插入到指令之后。

提高可读性

每个部分都有自己相应的文档。

减小二进制大小

访问者会扩展成很多代码。您可以通过使用宏如

注意,这会使与 TypeScript 相关的节点不被处理,但通常没问题,因为 typescript::strip 在开始时被调用,并且它会移除 TypeScript 特定的节点。

迁移 babel 的 expr.evaluate()

参见 swc_ecma_minifier::eval::Evaluator

依赖关系

~17–36MB
~614K SLoC