GGitHub 趋势观察站
每日 07:00 更新
← 返回今日榜单

vercel-labs /

scriptc

将 TypeScript 和 JavaScript 编译为原生程序及 WebAssembly 的实验性编译器。

访问 GitHub 仓库 ↗
最近上榜 · 2026-09-28#6

当日排名

+102当日新增 Star5,542总 Star

scriptc:把 TypeScript 编译成原生程序和 WebAssembly

一分钟看懂

scriptc 是一个实验性 TypeScript/JavaScript 编译器。它先利用 TypeScript 编译器完成解析和类型检查,再生成类型化中间表示,最终输出可读 C、LLVM IR、原生汇编、目标文件、可执行文件或 WebAssembly。

你可以用它做什么

  • 把适合静态分析的 TypeScript 程序编译成不依赖 Node.js 的原生可执行文件。
  • 生成 C 或 LLVM IR,用于检查编译过程和继续接入原生工具链。
  • 为 WASI 环境生成 WebAssembly 程序。
  • 在需要更多 JavaScript 动态特性时,以动态模式嵌入 quickjs-ng 运行时。

主要能力

  • 支持多阶段输出,包括中间表示、C、LLVM IR、汇编、目标文件和最终程序。
  • 静态模式使用较小的运行时,不需要打包完整 JavaScript 引擎。
  • 动态模式用于处理静态编译难以覆盖的 JavaScript 语义。
  • 面向 macOS、Linux、Windows 和 WASI 提供不同输出路径。

适合哪些人

适合研究编译器、希望探索 TypeScript 原生部署方式的开发者,以及需要分析生成代码或实验 WebAssembly 目标的工具链工程师。它目前不适合作为成熟产品构建流程的无风险替代品。

怎么开始使用

官方要求 Node.js 24 或更高版本。可通过 npm install -g scriptc 安装,然后对入口 TypeScript 文件运行 scriptc。如果需要原生链接、C 回退或 WASI 输出,还要按目标平台准备链接器、C 编译器、SDK/sysroot 或 Zig 等外部工具。

使用前需要知道

README 明确把项目标为实验性,支持的 JavaScript/TypeScript 语义和平台行为仍可能变化。生成原生可执行文件依赖系统工具链;动态模式会嵌入 JavaScript 引擎,产物体积和运行特性与静态模式不同。项目采用 Apache-2.0 许可证。

官方资料