
👋 写在前面
作为前端开发者,谁没被跨平台开发的痛点折磨过?
• 用Electron写桌面端,一个Hello World动辄上百MB,启动慢、内存高,被用户吐槽“臃肿”; • 学Flutter/React Native,不仅要适配多端差异,还要面对“热更新失效、原生组件兼容坑”的一堆玄学问题; • 想写个轻量工具,却要为了打包、运行时依赖折腾半天,完全违背了“快速开发”的初衷。
直到我挖到了这个叫 PerryTS 的开源项目——它直接用TypeScript写代码,就能编译出macOS、Windows、Linux、iOS、Android甚至WebAssembly的原生二进制文件,零运行时依赖,不用Electron,也不用V8引擎,真正做到了“一套代码,全平台原生性能”。
今天就带大家拆解这个GitHub 爆火的项目,看完你会发现:前端开发的跨平台时代,可能真的要变天了。
🚀 PerryTS 到底是什么?
简单说,它是一个用Rust写的TypeScript原生编译器,核心逻辑一句话就能概括:
把你写的TypeScript代码,直接编译成各平台的原生可执行文件,没有中间层,没有运行时,没有浏览器引擎,也没有Node.js依赖。
它的GitHub仓库里,写着一句戳中所有前端痛点的话:“Compiles TypeScript source code directly to native executables for macOS, iOS, Android, Windows, GTK4 (Linux), and Web — no Node.js, no Electron, no browser engine.”
也就是说,你用熟悉的TS语法写代码,编译出来的是平台原生程序:
• 桌面端:macOS用AppKit、Windows用Win32、Linux用GTK4,全是系统原生UI组件,流畅度和原生开发毫无区别; • 移动端:iOS/Android直接调用系统原生UI框架,没有RN的桥接延迟; • 命令行:直接编译出CLI工具,不用打包Node环境,一个几MB的文件就能跑; • 甚至还能编译成WebAssembly,给Web端带来接近原生的性能。
最绝的是,它的编译命令简单到离谱:
1 2 3 4 5 6 # 安装PerryTSnpm install -g @perryts/perry# 一行命令,TS文件变原生二进制perry compile src/main.ts -o myapp./myapp
不用配置复杂的打包脚本,不用处理跨平台构建工具,就这两步,你的TS代码就变成了各平台原生可执行文件。
💡 它凭什么能颠覆跨平台开发?
很多人看到这里会问:“这不就是另一个跨平台框架吗?有什么特别的?”
区别真的很大,PerryTS 解决了传统跨平台方案的三大核心痛点,这也是它能在GitHub快速出圈的原因:
1. 彻底告别“臃肿”:没有运行时,只有原生二进制
Electron 为什么被吐槽“臃肿”?因为它本质是把Chromium和Node.js打包进程序里,哪怕是最简单的应用,也要带上上百MB的浏览器内核和运行时环境。而 PerryTS 直接跳过了中间层,用SWC解析TS代码,再通过Cranelift/LLVM编译成平台原生机器码,打包出来的文件体积小到离谱:一个简单的CLI工具,编译后只有几MB;桌面GUI应用也能做到几十MB级别,启动速度和内存占用和原生开发的程序几乎没有区别。
2. 原生UI+原生性能,拒绝“伪跨平台”
Flutter用Skia自己渲染UI,RN用桥接调用原生组件,两者都存在“UI表现不一致”和“性能损耗”的问题。而 PerryTS 更激进:它不做任何封装,直接让编译器生成各平台的原生API调用。写出来的按钮、窗口、列表,就是macOS/Windows/Linux/iOS系统自带的原生控件,完全没有“高仿原生”的割裂感,动画、交互、字体渲染全是原生体验。
3. 用你最熟悉的TS,就能开发全平台应用
对于前端开发者来说,最痛的不是跨平台,而是要学习多套语言和框架:写桌面端要学C#/Swift,写移动端要学Kotlin/Swift,写Web又要回到JS/TS。而 PerryTS 直接把TypeScript变成了“通用原生开发语言”,你不用切换技术栈,不用学新语法,甚至不用离开VS Code,就能写出跨全平台的原生应用。这对前端开发者来说,简直是降维打击。
🧐 PerryTS 适合谁?又有什么局限?
✅ 这些场景,它直接封神
• 轻量桌面工具开发:比如本地文件处理、脚本工具、小面板应用,不用Electron,编译出几MB的原生程序,发给同事就能直接用; • 跨平台CLI工具:用TS写命令行脚本,编译成各平台二进制文件,不用依赖Node环境,用户下载就能跑; • 原型快速验证:想做一个跨平台产品原型,不用折腾Flutter/RN的环境配置,用TS写一套代码就能快速出可运行的原生Demo; • 前端开发者转原生开发:不想学Swift/Kotlin,又想做跨平台应用,PerryTS 就是你的“无痛过渡方案”。
⚠️ 这些情况,还得谨慎入坑
• 项目目前还处于活跃开发阶段(当前版本0.2.173),生态和API还在快速迭代,不建议直接用于生产环境; • 复杂的原生功能(比如相机、蓝牙、推送)还需要手动适配,目前对第三方库的支持还不如Electron/Flutter成熟; • 桌面端GUI开发还在完善中,高级UI组件和复杂布局的支持还不够全面。
🌟 给前端开发者的一点小思考
从Electron到Flutter,再到现在的PerryTS,跨平台开发的趋势其实一直没变:让开发者用更少的成本,写出更接近原生体验的应用。PerryTS 最厉害的地方,不是它的技术有多黑科技,而是它真正站在了前端开发者的角度:用我们最熟悉的TypeScript,解决了跨平台开发最痛的“性能、体积、环境依赖”三大问题。
它可能暂时还替代不了所有跨平台方案,但至少给了我们一个全新的选择:原来前端开发者,也能写出真正意义上的原生应用。
如果你也是被跨平台开发折磨的前端er,不妨去GitHub上体验一下,说不定它就是你一直在找的那个“跨平台神器”。
github:
https://github.com/PerryTS/perry
中文官网地址:
https://www.perryts.com/zh-Hans/
💬 互动话题
你平时做跨平台开发,最头疼的问题是什么?是体积臃肿、性能卡顿,还是环境配置麻烦?评论区聊聊你的踩坑经历吧~

往期热门回顾


转载是一种动力
点赞是一种美德
分享是一种积极的生活态度

感谢阅读!顺手点个“赞”和“在看”呗
关注本公众号并设为星标
不错过每一篇更新


--------- END


长按识别小程序
·博主的小程序(进度30%)·
夜雨聆风