Tutorial de Pake: empaquetar cualquier sitio web como aplicación de escritorio

Guía práctica de tw93/Pake: instalación, empaquetado por línea de comandos, iconos y tamaño de ventana personalizados, desarrollo local y comandos de build para convertir sitios frecuentes en apps de escritorio ligeras.

Pake utiliza Tauri para envolver páginas remotas, archivos HTML locales o directorios de sitios estáticos como aplicaciones de escritorio para macOS, Windows y Linux. El reto no es recordar un único comando pake URL, sino confirmar que Node, Rust y las dependencias de compilación están listos y comprobar que el inicio de sesión, las redirecciones, las descargas y el acceso a dispositivos funcionan dentro del WebView del sistema.

Dirección del proyecto:

https://github.com/tw93/Pake

Conclusión rápida

  • Recomendado usar Node.js 22, requisito mínimo 18; Las compilaciones CLI también requieren Rust 1.85+.
  • La primera compilación descargará y compilará dependencias, que son notablemente más lentas que las versiones posteriores. No juzgues erróneamente la espera como congelación.
  • Deben incluirse llamadas de automatización o de agente--json, no te bases en que los registros de lenguaje natural coincidan para juzgar el éxito.
  • Pake no puede eludir las restricciones del sitio web sobre WebViews incrustados, cookies de terceros, SSO o extensiones de navegador.

Revisa el entorno e instala la CLI Pake

Primero, revisa la versión:

1
2
3
4
node --version
npm --version
rustc --version
cargo --version

Cuando Node esté por debajo de 18 o Rust por debajo de 1,85, actualiza primero tu entorno. Comando de instalación recomendado:

README proporciona el comando:

1
pnpm install -g pake-cli

También puedes usar npm directamente:

1
npm install -g pake-cli

Tras la instalación, debes verificar que el terminal actual encontró la versión prevista:

1
2
pake --version
pake --help

Si encuentras problemas de permisos durante la instalación global, puedes usarlo primeronpx pake-cli [url] [options], no utilice directamente privilegios de administrador para sobrescribir el directorio del nodo del sistema.

Primera vez que empaqueta usando una página simple pública

Empaquetar GitHub como aplicación de escritorio:

1
pake https://github.com --name "GitHub"

Pake escribe el artefacto en el directorio actual. La primera ejecución puede instalar Rust o componentes de la plataforma. Comprueba el código de salida y el paquete real, no solo una línea de registro success.

Los entornos automatizados recomiendan el uso de salida estructurada:

1
pake https://github.com --name "GitHub" --json

La salida estándar debe ser un JSON analizable. Las salidas no nulas, fallos en el análisis de JSON o la ausencia de ruta de producto en el JSON deberían considerarse fallos de compilación.

Iconos personalizados, ventanas y plataformas objetivo

El README ofrece un ejemplo más completo:

1
pake https://weekly.tw93.fun --name Weekly --icon https://cdn.tw93.fun/pake/weekly.icns --width 1200 --height 800 --hide-title-bar

Presta atención a las diferencias de plataforma:

  1. --hide-title-barSolo disponible en macOS.
  2. En Windows/Linux usa --hide-window-decorations para ocultar las decoraciones nativas.
  3. --targetsSe utiliza para seleccionar DMG, AppImage, DEB, RPM o arquitectura de destino, con valores específicos disponibles según el sistema actual.
  4. El icono puede ser un archivo local o remoto; Pake lo convertirá a formato plataforma; Si la descarga falla, utiliza el archivo local para eliminar problemas de red.

Por ejemplo, en macOS genera una aplicación .app fácil de probar:

1
PAKE_CREATE_APP=1 pake https://example.com --name "Example"

Paquete de Linux AppImage:

1
pake https://example.com --name "Example" --targets appimage

No asumas que todos los paquetes de instalación de plataforma pueden generarse en un solo sistema sin configuración. Las compilaciones cross-architecture también requieren objetivos Rust y cadenas de herramientas de sistema correspondientes.

Empaquetar sitios estáticos locales

Pake puede recibir inclusiones directamenteindex.htmlDirectorio de build:

1
2
npm run build
pake ./dist --name "MyTool" --json

Un directorio de entrada empaqueta todo el árbol. Para un único HTML que necesite recursos adyacentes, usa --use-local-file:

1
pake ./my-app/index.html --name "MyApp" --use-local-file

El enrutamiento de hash para SPAs locales puede funcionar directamente; El enrutamiento en modo historial no es equivalente al de servidores web ordinarios; en la práctica debe probarse la actualización profunda de caminos.

Usa un archivo de configuración para builds reproducibles

Cuando hay muchos parámetros, usar la configuración JSON facilita la auditoría que copiar repetidamente comandos largos:

1
pake --config app.json --json

Empuñaduraapp.jsonIncluir control de versiones, pero no escribir cookies de inicio de sesión del sitio web, tokens ni direcciones temporales internas. Los registros de compilación deberían al menos conservar la versión Pake, la versión Node, la versión Rust, la plataforma destino y la suma de comprobación del producto.

Validar aplicaciones de escritorio, no solo verificar los paquetes de instalación

Después de instalar o abrir el producto de construcción, comprueba artículo por artículo según el uso real de la web:

  1. La pantalla principal carga correctamente, y los certificados y proxies no reportan errores.
  2. Tras iniciar sesión, reiniciar la aplicación y confirmar si la sesión se mantiene como se espera.
  3. Si el enlace externo se abre dentro de la aplicación o en el navegador del sistema cumple con el límite de seguridad.
  4. Si la carga, descarga, portapapeles y arrastrar y soltar archivos funcionan correctamente.
  5. Los accesos directos, el escalado de ventanas y la bandeja del sistema no entran en conflicto con la página web en sí.

Si es un sitio de videoconferencia, macOS también requiere una declaración explícita de permisos:

1
pake https://meet.example.com --name "Meet" --camera --microphone

Estos parámetros no garantizan que el sitio web siempre permita el inicio de sesión o el acceso al dispositivo en WebView; solo añaden declaraciones de permiso apropiadas para la aplicación.

Cómo comprobar fallos de inicio de sesión, SSO y redirección

Reconstruye primero usando el modo depuración:

1
pake https://app.example.com --name "ExampleDebug" --debug

Abre las herramientas de desarrollo para ver la Consola y la Red. Los límites comunes incluyen:

  • Los proveedores de identidad rechazan WebView embebido.
  • Las cookies de terceros o el almacenamiento entre orígenes están restringidos.
  • Las devoluciones de llamada OAuth saltan a otro nombre de dominio, que por defecto se asigna al navegador del sistema.
  • Los sitios web dependen de extensiones de navegador o de varias pestañas.

Cuando debas mantener dominios SSO confiables dentro de la aplicación, evalúa --safe-domain:

1
pake https://app.example.com --name "Example" --safe-domain app.example.com,login.example.com

No utilices reglas excesivamente amplias de nombres de dominio para forzar que todos los enlaces permanezcan dentro de la app. Cuando los servicios SSO rechazan explícitamente WebView, ampliar aún más el rango de navegación no puede solucionar el problema.

Diagnostica los fallos de compilación en orden

Etapa Fenómeno típico Método de manejo
CLI no encontrado pake: command not found Comprueba si el bin global npm/pnpm ha entrado en el PATH, o úsalonpx pake-cli
Fallo de inicialización de Rust No encontradorustcTiempo de espera para descargar Instala Rust por separado, vuelve a abrir el terminal para verificar la versión
Dependencia de la plataforma ausente Error de bundler, WebKitGTK o packer de Tauri Dependencias necesarias para instalar el sistema actual; no reinstalar repetidamente pake-cli
Fallo en el procesamiento de iconos Fallo en la descarga, fallo en la conversión de formato Cambia a PNG/ICO/ICNS local y luego verifica la red por separado
Pantalla blanca del sitio web Compilado con éxito pero sin contenido en tiempo de ejecución Uso--debugComprueba compatibilidad con CSP, certificados, JS y WebView
Bucle de inicio de sesión Tras iniciar sesión con éxito, volver a la entrada Comprobar cookies, nombres de dominio de devolución de llamada y políticas de proveedor de identidad WebView

Vuelve a una compilación mínima funcional

Al solucionar el problema, primero guarda el comando fallido y la salida de la versión, y luego vuelve a la URL pública más sencilla:

1
2
3
4
pake --version
node --version
rustc --version
pake https://example.com --name "PakeSmokeTest" --json

Si la muestra mínima tiene éxito, significa que la cadena de herramientas es básicamente normal, y el problema es más probable que esté en la web objetivo, el icono o parámetros adicionales. Luego añade solo una opción a la vez. Si la muestra mínima también falla, gestiona las dependencias de Nodo, Rust o plataforma.

Si ocurre regresión tras actualizar la CLI, no sobrescribas el producto antiguo. Graba la versión actual y reconstruye la misma prueba de humo en el directorio de aislamiento; Solo cuando se pueden repetir las diferencias entre versiones nuevas y antiguas se juzgan las regresiones de CLI.

Desarrollo local

Si quieres modificar el propio Pake:

1
pnpm i

Desarrollo local:

1
pnpm run dev

Aplicaciones en la construcción:

1
pnpm run build

Desarrollar Pake en sí no es el mismo camino que usar la CLI. La recomendación oficial actual es Node.js 22 y requiere Rust 1.85+. Los usuarios habituales que solo quieren encapsular páginas web no necesitan clonar el repositorio para ejecutar estos tres comandos.

Aceptación previa al lanzamiento

Antes de publicar a otros, las siguientes comprobaciones deben realizarse en una cuenta limpia o en una máquina de prueba:

  1. --jsonRetornos exitosos, y el camino del producto realmente existe.
  2. La instalación, el arranque, la salida y la desinstalación funcionan con normalidad.
  3. El inicio de sesión, las devoluciones de llamada, la subida/descarga y el comportamiento de backlinks cumplen con las expectativas.
  4. No se han introducido tokens internos, cookies ni puntos de entrada de depuración en la aplicación.
  5. Grabar versiones de Pake, Nodo, Rust y arquitecturas objetivo.
  6. Conserva el paquete de instalación anterior y funcional para que pueda restaurarse cuando una nueva web o CLI se revierta.

Pake es genial para estaciones de documentos, paneles de monitorización y herramientas web fijas, pero no es lo mismo que un navegador completo. Úsalo primero--debugy una prueba mínima de humo para demostrar que el sitio web objetivo es adecuado para WebView, luego personalizar iconos, bandejas, ventanas y permisos para evitar la falsa finalización de “paquete de instalación generado con éxito, pero aplicación inutilizable.”