88 个版本 (40 个重大更改)
1.0.1 |
|
---|---|
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 在 解析器实现
34,333 每月下载量
在 60 个 包(38 个直接)中使用
355KB
10K SLoC
deno_ast
为 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
- 在与此仓库同级的目录中检查以下存储库(例如
/home/david/dev/deno_graph
、/home/david/dev/deno_ast
) - 确保它们都设置了上面指定的 URLs 的
upstream
远程。例如,您的deno_graph
存储库应该具有git remote add upstream https://github.com/denoland/deno_graph
。 - 运行
./scripts/update_swc_deps.ts
- 运行
./scripts/01_setup.ts
- 运行
./scripts/02_build.ts
并修复任何构建错误。 - 运行
./scripts/03_test.ts
并修复任何失败的测试。- 此时,所有仓库中的测试应该都通过了。
- 为升级 deno_ast 打开一个 PR。
- 合并 PR 并使用 发布工作流程 发布 deno_ast 的新版本。
- 此时,提升 deno_ast 的版本并打开 deno_graph、deno_lint 和 dprint-plugin-typescript 的 PR(注意:
./scripts/04_confirm.ts
可能有助于自动化一些操作。阅读其源代码以了解其工作原理,以便能够处理可能出现的问题)。 - 合并 deno_graph 的 PR 并使用其发布工作流程进行发布。
- 向 deno_emit、deno_doc 和 eszip 打开 PR。
- 合并这些 PR 并进行发布。同时合并和发布 deno_lint 和 dprint-plugin-typescript(Bartek 和 David 有权发布 dprint-plugin-typescript)。
- 为 Deno 打开一个版本提升后的 PR 并合并该 PR。
依赖项
~7–22MB
~314K SLoC