Pake: этот CLI-инструмент создает десктопные приложения весом 5 МБ

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Это Paik, инструмент командной строки, который превращает любой веб-сайт в полноценное
00:00:05настольное приложение одной командой. Он написан на Rust, поэтому созданные им приложения
00:00:10весят около 5 МБ, что крошечно по сравнению с Electron, который упаковывает целую копию
00:00:15Chrome в каждое приложение. Вы даже можете внедрять свои CSS и JavaScript, добавить иконку в трей
00:00:20и изменить стиль заголовка окна, не написав ни строчки кода на Rust. Но зачем мне использовать
00:00:25его вместо других подобных инструментов, и почему Paik требует наличия PNPM или NPM,
00:00:31если он написан на Rust? Я, честно говоря, не хочу знать, но подписывайтесь, и давайте выясним. Paik был создан в 2022 году TW93, продуктовым инженером
00:00:40из Китая, который также создал Mole, безумно популярный инструмент для оптимизации Mac, который я
00:00:45сам уже давно использую. Но идея Paik имеет большой смысл, потому что если задуматься,
00:00:49такие приложения, как YouTube Music, Gmail и Instagram, не имеют собственных официальных нативных
00:00:55приложений. Они живут только внутри вкладок браузера, что хорошо, если вам нужно всё функциональное
00:00:59многообразие браузера, но если вы хотите более производительный веб-сайт с собственной иконкой
00:01:04в Dock-панели для разделения, то отдельное приложение для этого может быть очень полезным. Здесь-то
00:01:09потому что он построен на базе Tauri 2, который использует системный нативный webview, делая приложения
00:01:14который использует системный нативный веб-просмотр, делая приложения меньше, быстрее и снижая
00:01:19потребление памяти, подобно тому, как работают Electro, Bun или Vercel Zero Native,
00:01:24о которых я расскажу чуть позже в этом видео. Но основной кастомный код, написанный TW93 поверх
00:01:30Tauri 2, состоит примерно из 1800 строк кода на Rust и отвечает за такие вещи, как управление окнами, нативные меню
00:01:35и внедрение JavaScript. Вам нужно просто ввести одну команду, и Paik позаботится обо всём. На самом деле,
00:01:40давайте попробуем использовать Paik, чтобы превратить мой проект имитации пленки в отдельное приложение. После установки
00:01:45CLI Paik вы заметите, что он очень похож на Mole, если вы когда-либо использовали Mole, и у него нет
00:01:50множества флагов, что, на мой взгляд, хорошо. Итак, когда сервер моего проекта запущен, я могу запустить Paik с
00:01:55URL и названием, которое я хочу дать приложению. Теперь, если я нажму ввод, он загрузит иконку и пройдет через
00:02:00процесс создания приложения, что может занять от 5 до 10 минут. И как только он закончит, он создаст
00:02:05этот DMG, который мы можем найти здесь, весом 4,3 мегабайта. И если вы нажмете на него, вот наше приложение,
00:02:10которое можно установить, перетащив в приложения. Похоже, иконка не подгрузилась, но это
00:02:14нормально. Теперь, если мы откроем наше приложение, мы увидим, что оно работает сразу, и иконка появилась в Dock.
00:02:19Я могу выбрать видео, и всё, кажется, работает нормально. И если мы посмотрим на монитор активности,
00:02:24мы увидим, что наше приложение использует всего 61 мегабайт памяти по сравнению с браузером ARC, который использует очень много.
00:02:30А если мы посмотрим на размер приложения, он составляет 55 мегабайт по сравнению с таким приложением на Electron, как Slack,
00:02:35которое весит 310 мегабайт. Но, как вы видели ранее, у Paik есть несколько довольно интересных опций. Например,
00:02:40я могу собрать то же приложение с флагом отладки, чтобы получить доступ к инструментам разработчика. И я могу изменить
00:02:46строку состояния, чтобы оно больше походило на приложение, используя флаг скрытия заголовка, который делает заголовок окна бесшовным.
00:02:51Но это приложение явно не было спроектировано как бесшовное. Но, к счастью, Paik дает нам возможность
00:02:56исправить это без редактирования исходного кода приложения. Я мог бы написать кастомный CSS и внедрить
00:03:01его в приложение с помощью флага внедрения, что добавило отступы сверху, но также означает, что появилось
00:03:06больше свободного места для прокрутки внизу. Мы можем использовать флаг отображения системного трея, показывая иконку в системном трее,
00:03:12позволяя нам показывать и скрывать наше приложение. И мы даже можем внедрять JavaScript, так же как и CSS.
00:03:17Но прямо сейчас кажется, что нельзя редактировать пункты меню, которые Paik предоставляет по умолчанию.
00:03:23И Paik работает только с запущенными URL. Так что если я закрою свой сервер и попытаюсь открыть приложение,
00:03:28оно просто покажет мне пустой экран. Но, справедливости ради, Paik не был предназначен для локальных приложений. Я на самом деле протестировал
00:03:33приложение YouTube Music, которое работает на удивление хорошо после одной команды. И оно даже работает в автономном режиме,
00:03:38потому что именно так работает сайт YouTube Music. Так что я использую его как свой основной музыкальный плеер,
00:03:42но это, по сути, не тот инструмент для ваших десктопных приложений, так как Paik оборачивает живой
00:03:48URL и не упаковывает ваш код, если только вы не используете опцию использования локального файла, о которой я узнал только
00:03:53после создания этого видео. Я бы также не сказал, что он хорошо построен. Выслушайте меня. Я установил Paik
00:04:00используя BUN вместо PNPM или NPM, но внутри ему нужен один из них для настройки сборки Tauri.
00:04:05А моя версия PNPM была новее, чем требовалось, что означало, что он отказывался собирать и
00:04:11устанавливать нужное мне приложение. Поэтому мне пришлось использовать Claude Code, чтобы отредактировать исходный код Paik, только чтобы заставить его работать.
00:04:15Я в итоге нашел для этого проблему, но всё это можно было бы решить, если бы Paik поставлялся с
00:04:20скомпилированным бинарным файлом, что является преимуществом использования чего-то вроде ElectroBUN или ZeroNative,
00:04:25потому что ElectroBUN дает вам реальную среду выполнения BUN за веб-просмотром, что означает, что вы можете запускать серверную
00:04:31логику, а ZeroNative идет еще дальше, давая вам полноценную оболочку Zig, которая может вызывать библиотеки C напрямую.
00:04:36Так что Paik — это самый быстрый способ обернуть живой веб-сайт, но если вам нужно что-то большее,

Key Takeaway

Paik — это CLI-инструмент на базе Tauri 2, который позволяет создавать быстрые и легковесные (около 5 МБ) десктопные приложения из живых веб-сайтов с возможностью настройки через CSS и JS.

Highlights

  • Paik преобразует любой веб-сайт в полноценное настольное приложение с помощью одной команды CLI.

  • Приложения, созданные с помощью Paik, весят около 5 МБ, так как используют системный нативный webview через Tauri 2.

  • Потребление памяти для таких приложений составляет около 61 МБ, что значительно меньше, чем у браузеров или приложений на Electron.

  • Инструмент поддерживает внедрение кастомного CSS и JavaScript для изменения внешнего вида и поведения веб-сайта в приложении.

  • Paik работает на базе Rust, но для процесса сборки требует наличия установленных PNPM или NPM.

Timeline

Назначение и архитектура Paik

  • Paik превращает веб-сайты в нативные приложения одной командой.
  • Архитектура инструмента опирается на Tauri 2, что обеспечивает минимальный размер файлов и низкое потребление ресурсов.
  • Разработчик TW93 создал инструмент на Rust для управления окнами и внедрения кода.

Инструмент решает проблему отсутствия нативных приложений у многих веб-сервисов, позволяя выделить их в отдельные элементы Dock-панели. Использование системного нативного webview исключает необходимость упаковывать полную копию Chrome, как это делает Electron. Основной код Paik состоит из 1800 строк на Rust, которые автоматизируют создание меню и управление окнами.

Практическое использование и оптимизация

  • Установка и создание приложения занимают от 5 до 10 минут.
  • Приложение весит 4,3 МБ в виде DMG-файла и потребляет около 61 МБ оперативной памяти.
  • Флаги CLI позволяют включать инструменты разработчика, скрывать заголовки окон и внедрять CSS/JS для кастомизации интерфейса.

При запуске проекта через Paik создается установщик, который корректно работает в системе. Использование флагов позволяет адаптировать внешний вид сайта под формат приложения, исправляя верстку через кастомный CSS или добавляя функционал через JavaScript. Также доступна опция отображения иконки в системном трее.

Ограничения и альтернативы

  • Paik предназначен в основном для оборачивания живых URL, а не локального кода.
  • Процесс сборки требует наличия PNPM или NPM, что может вызвать конфликты версий.
  • Альтернативы вроде ElectroBUN или ZeroNative предоставляют более широкие возможности для серверной логики и вызова низкоуровневых библиотек.

Инструмент не всегда корректно обрабатывает локальные файлы без специальной конфигурации и зависит от внешней среды Node.js, несмотря на использование Rust. Отсутствие скомпилированного бинарного файла усложняет процесс настройки сборки. Для задач, требующих сложной бэкенд-логики, целесообразнее использовать альтернативные инструменты с более мощными средами выполнения.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video