Skip to content

一个高性能的 JavaScript/TypeScript 代码转换器,基于 Rust 和 SWC

License

Notifications You must be signed in to change notification settings

Sunny-117/rsdown

Repository files navigation

rsdown

简体中文|English

npm 版本 npm 下载量 包大小 JSDocs 许可证

一个高性能的 JavaScript/TypeScript 代码转换器,基于 Rust 和 SWC。

特性

  • 🚀 高性能 - 基于 Rust 和 SWC 构建
  • 🔄 转换 constlet 声明为 var
  • 📦 易于集成 - 作为 Node.js 模块工作
  • 🛠️ 开箱即用的 TypeScript 支持

安装

npm install rsdown
pnpm add rsdown
yarn add rsdown
bun install rsdown

用法

import { transformToVar } from 'rsdown'
const code = `const x = 1;let y = 2;`
const result = transformToVar(code)
console.log(result)
// 输出:
// var x = 1;
// var y = 2;

API

transformToVar(code: string): string

通过将 JavaScript/TypeScript 代码中的 constlet 声明转换为 var 声明来进行转换。

  • 参数:
    • code (string): 要转换的源代码
  • 返回:
    • (string): 转换后的代码

开发

先决条件

设置

  1. 克隆仓库
git clone https://github.com/Sunny-117/rsdown.git
cd rsdown
  1. 安装依赖
pnpm install
  1. 构建项目
pnpm build
  1. 运行测试
pnpm test

技术细节

该项目使用:

  • SWC 进行 JavaScript/TypeScript 的解析和转换
  • napi-rs 用于 Node.js 原生模块绑定
  • Vitest 进行测试

贡献

欢迎贡献!请随时提交 Pull Request。对于重大更改,请先打开一个问题以讨论您想要更改的内容。

请确保适当更新测试。

许可证

MIT 许可证 © 2024-PRESENT Sunny-117

架构设计

graph TD
    A[JavaScript/TypeScript Code] --> B[SWC Parser]
    B --> C[AST]
    C --> D[VarTransformer]
    D --> E[Modified AST]
    E --> F[SWC Codegen]
    F --> G[Transformed Code]
Loading

实现原理

rsdown 使用 Rust 和 SWC 实现高性能的代码转换:

  1. 解析: 使用 SWC 的解析器将源代码解析为 AST
  2. 转换: 通过 VarTransformer 访问器修改声明类型
  3. 生成: 使用 SWC 的代码生成器输出结果

详细的架构说明请查看 架构文档

About

一个高性能的 JavaScript/TypeScript 代码转换器,基于 Rust 和 SWC

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •