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 许可证。