Skip to content

🤱🻠很简å•的用 Rust 打包网页生æˆå¾ˆå°çš„ Mac App 🤱🻠A simple way to package a web page with Rust to create Mac App.

tw93/Pake

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

中文 | English

Pake

很简å•的用 Rust 打包网页生æˆå¾ˆå°çš„ Mac App,底层使用 Tauri,支æŒå¾®ä¿¡è¯»ä¹¦ã€Flomoã€RunCodeã€Witeboardã€ToolsFunã€Vercelã€å³åˆ»ã€RoamResearch 等,详细å°ç™½å¼€å‘教程å¯è§åº•部。

特å¾

🂠å°ï¼šç›¸æ¯”ä¼?统的 Electron 套壳打包,大å°è¦å°å°†è¿‘ 50 å€ï¼Œä¸€èˆ¬ä¸åˆ° 2M (æ•°æ®)
😂 快:Pake 的底层使用的 Rust Tauri 框架,性能体验较 JS 框架è¦è½»å¿«ä¸å°‘,内存å°å¾ˆå¤š
🩴 ç‰¹ï¼šä¸æ˜¯å•纯打包,实现了通用快æ·é”®çš„é€ä¼?ã€æ²‰æµ¸å¼çš„窗å£ã€æ‹–åŠ¨ã€æ‰“包æ?·å¼å…¼å®¹
ðŸ¶ çŽ©ï¼šåªæ˜¯ä¸€ä¸ªå¾ˆç®€å•çš„å°çŽ©å…·ï¼Œç”¨ Rust 替代之å‰å¥—壳网页è€çš„æ€è·¯çŽ©æ³•ï¼ŒPWA 也很好,å‹å¥½äº¤æµå‹¿å–·

å¿«æ·é”®

  1. command + â†ï¼šè¿”回上一个页é¢
  2. command + →:去下一个页é¢ï¼Œå‡å¦‚有的è¯
  3. command + ↑:自动滚动到页é¢é¡¶éƒ¨
  4. command + ↓:自动滚动到页é¢åº•部
  5. command + r:刷新页é¢
  6. command + w:éšè—窗å£ï¼Œéžé€€å‡º

此外还支æŒåŒå‡»å¤´éƒ¨è¿›è¡Œå…¨å±åˆ‡æ¢ï¼Œæ‹–拽头部进行移动窗å£ï¼Œè¿˜æœ‰å…¶ä»–需求,欢迎æè¿‡æ¥ã€‚

效果

WeRead Download Flomo Download
RunCode Download Witeboard Download
ToolsFun Download Vercel Download

更多常用 App 下载å¯ä»¥åŽ» Release 中看看。

å¼€å‘

开始å‰å‚考 Tauri 快速é…置好环境,如果ä½?想打包 Windowsã€Linux 系统的包,å¯ä»¥å‚考 Building 文档

// 安装ä¾èµ–
npm i

// 调试
npm run dev

// 打包
npm run build

打新包

  1. 修改 src-tauri 目录下的 tauri.conf.json 中的 productNameã€iconã€titleã€identifier è¿™ 4 个字段,其中 icon å¯ä»¥ä»Ž icons 目录选择一个,也å¯ä»¥åŽ» macOSicons 下载符åˆäº§å“åç§°çš„
  2. 修改 src-tauri/src 目录下的 main.rs 中的 with_url 字段为ä½?éœ€è¦æ‰“包网页的地å€
  3. npm run dev 本地调试看看效果,此外å¯ä»¥æ‰“å¼€ main.rs 中 devtools 两处注释(æœç´¢ _devtools)进行容器调试,å‡å¦‚ä½?ä¸å¥½é€‚é…æ²‰æµ¸å¼å¤´éƒ¨ï¼Œå¯ä»¥å°† .with_titlebar_transparent(true) 注释掉就好
  4. npm run build è¿è¡Œå³å¯æ‰“包,å‡å¦‚有打开 devtools 模å¼ï¼Œè®°å¾—注释掉

高级

如何改写æ?·å¼ï¼Œå¦‚去掉原站广告ã€ä¸æƒ³è¦çš„æ¨¡å—ã€ç”šè‡³é‡æ–°è®¾è®¡ï¼Ÿ

  1. é¦–å…ˆéœ€è¦æ‰“å¼€ devtools 调试模å¼ï¼Œæ‰¾åˆ°ä½?需è¦ä¿®æ”¹çš„æ?·å¼å称,先在 devtools 里é¢éªŒè¯æ•ˆæžœ
  2. 找到 main.rs 中æ?·å¼ä½ç½®ï¼ˆæœç´¢ style.innerHTML),将需è¦è¦†ç›–çš„æ?·å¼åŠ?上å³å¯ï¼Œæœ‰ä¸€äº›æ¡ˆä¾‹ä½?å¯ä»¥æ¨¡ä»¿
  3. æ­£å¼æ‰“包å‰è®°å¾—干掉 devtools 注释

如何注入 JS 的逻辑,比如实现事件监å¬ï¼Œæ¯”如说键盘快æ·é”®ï¼Ÿ

  1. 和上é¢1案例中准备工作一致
  2. å‚考 main.rs 中事件监å¬ï¼ˆæœç´¢document.addEventListener),直接编写å³å¯ï¼Œè¿™é‡Œæ›´å¤šæ˜¯åŸºç¡€å‰ç«¯çš„æŠ€æœ¯

如何进行容器内的事件和 Pake 通信,比如说 Web çš„æ‹–æ‹½ã€æ»šåЍã€ç‰¹æ®Šç‚¹å‡»ä¼?递啥的?

  1. 和上é¢1案例中准备工作一致
  2. å‚考 main.rs 中通信代ç?(æœç´¢ postMessage),写好事件监å¬ï¼Œç„¶åŽç”¨ window.ipc.postMessage将事件以åŠå‚æ•°ä¼?递出æ¥
  3. ç„¶åŽå‚考容器接收事件(æœç´¢ window.drag_window),自己处ç†å³å¯ï¼Œæ›´å¤šå¯ä»¥å‚考 tauri ä»¥åŠ wry 的官方文档

最åŽ

  1. 希望大伙玩的过程中有一ç§å­¦ä¹?æ–°æŠ€æœ¯çš„å–œæ‚¦æ„Ÿï¼Œå¦‚æžœæœ‰æ–°ç‚¹å­æ¬¢è¿Žå‘Šè¯‰æˆ‘
  2. å‡å¦‚ä½?å‘现有很适åˆåšæˆ Mac App 的网页也很欢迎告诉我,我给åŠ?åˆ°é‡Œé¢æ¥

About

🤱🻠很简å•的用 Rust 打包网页生æˆå¾ˆå°çš„ Mac App 🤱🻠A simple way to package a web page with Rust to create Mac App.

Topics

Resources

Stars

Watchers

Forks

Languages