#ast #deno #text-parser #lexing #swc #comments #module

deno_ast

为 Deno 提供源文本解析、词法分析和 AST 相关功能

88 个版本 (40 个重大更改)

1.0.1 2024 年 1 月 8 日
0.41.3 2024 年 8 月 8 日
0.41.2 2024 年 7 月 31 日
0.34.2 2024 年 3 月 6 日
0.5.0 2021 年 10 月 29 日

#127解析器实现

Download history 10331/week @ 2024-05-04 14311/week @ 2024-05-11 21125/week @ 2024-05-18 13635/week @ 2024-05-25 12959/week @ 2024-06-01 17672/week @ 2024-06-08 14327/week @ 2024-06-15 15377/week @ 2024-06-22 12583/week @ 2024-06-29 11955/week @ 2024-07-06 7763/week @ 2024-07-13 9117/week @ 2024-07-20 8104/week @ 2024-07-27 6813/week @ 2024-08-03 10280/week @ 2024-08-10 7897/week @ 2024-08-17

34,333 每月下载量
60 包(38 个直接)中使用

MIT 许可证

355KB
10K SLoC

deno_ast

Discord Chat

Deno 提供源文本解析、词法分析和 AST 相关功能。

use deno_ast::parse_module;
use deno_ast::MediaType;
use deno_ast::ParseParams;
use deno_ast::SourceTextInfo;

let source_text = "class MyClass {}";
let text_info = SourceTextInfo::new(source_text.into());
let parsed_source = parse_module(ParseParams {
  specifier: deno_ast::ModuleSpecifier::parse("file:///my_file.ts").unwrap(),
  media_type: MediaType::TypeScript,
  text_info,
  capture_tokens: true,
  maybe_syntax: None,
  scope_analysis: false,
}).expect("should parse");

// returns the comments
parsed_source.comments();
// returns the tokens if captured
parsed_source.tokens();
// returns the module (AST)
parsed_source.module();
// returns the `SourceTextInfo`
parsed_source.text_info();

swc 升级

我们大约每月升级一次 swc。升级 swc 是一个非常复杂的过程,通常需要修改下游 Deno 包中的许多代码。在将更新 swc 的 PR 合并到 deno_ast 之前,我们还会对所有下游包测试新的 swc 版本。

请不要在问题跟踪器中提出升级 swc 的 PR,除非你已经声明你将处理它,并且已经在所有下游包中运行了测试。

要升级 swc

  1. 在与此仓库同级的目录中检查以下存储库(例如 /home/david/dev/deno_graph/home/david/dev/deno_ast
  2. 确保它们都设置了上面指定的 URLs 的 upstream 远程。例如,您的 deno_graph 存储库应该具有 git remote add upstream https://github.com/denoland/deno_graph
  3. 运行 ./scripts/update_swc_deps.ts
  4. 运行 ./scripts/01_setup.ts
  5. 运行 ./scripts/02_build.ts 并修复任何构建错误。
  6. 运行 ./scripts/03_test.ts 并修复任何失败的测试。
    • 此时,所有仓库中的测试应该都通过了。
  7. 为升级 deno_ast 打开一个 PR。
  8. 合并 PR 并使用 发布工作流程 发布 deno_ast 的新版本。
  9. 此时,提升 deno_ast 的版本并打开 deno_graph、deno_lint 和 dprint-plugin-typescript 的 PR(注意:./scripts/04_confirm.ts 可能有助于自动化一些操作。阅读其源代码以了解其工作原理,以便能够处理可能出现的问题)。
  10. 合并 deno_graph 的 PR 并使用其发布工作流程进行发布。
  11. 向 deno_emit、deno_doc 和 eszip 打开 PR。
  12. 合并这些 PR 并进行发布。同时合并和发布 deno_lint 和 dprint-plugin-typescript(Bartek 和 David 有权发布 dprint-plugin-typescript)。
  13. 为 Deno 打开一个版本提升后的 PR 并合并该 PR。

依赖项

~7–22MB
~314K SLoC