Actualizar desde Tauri 1.0
Esta guía te guiará a través de la actualización de tu aplicación Tauri 1.0 a Tauri 2.0.
Preparándose para móvil
La interfaz móvil de Tauri requiere que tu proyecto produzca una biblioteca compartida. Si estás apuntando a móviles para tu aplicación existente, debes cambiar tu crate para producir ese tipo de artefacto junto con el ejecutable de escritorio.
- Modifica el manifiesto Cargo para producir la biblioteca. Añade el siguiente bloque:
-
Cambia el nombre de
src-tauri/src/main.rs
asrc-tauri/src/lib.rs
. Este archivo será compartido tanto por los targets de escritorio como por los móviles. -
Cambia el nombre de la cabecera de la función
main
enlib.rs
por el siguiente:
El macro tauri::mobile_entry_point
prepara tu función para ser ejecutada en el móvil.
- Vuelve a crear el archivo
main.rs
llamando a la función de ejecución compartida:
Migración Automatizada
La CLI de Tauri v2 incluye un comando migrate
que automatiza la mayor parte del proceso y te ayuda a finalizar la migración:
Para saber más sobre el comando migrate
, consulta la Referencia de la interfaz de línea de comandos
Resumen de los cambios
A continuación se resumen los cambios de Tauri 1.0 a Tauri 2.0:
Configuración de Tauri
- Los campos
package > productName
ypackage > version
se han trasladado al campo de nivel superior. package
eliminado.- La clave
tauri
ha pasado a serapp
. tauri > allowlist
eliminado. Véase Migrar permisos.tauri > allowlist > protocol > assetScope
movido aapp > security > assetProtocol > scope
.tauri > cli
movido aplugins > cli
.tauri > windows > fileDropEnabled
renombrado aapp > windows > dragDropEnabled
.tauri > updater > active
eliminado.tauri > updater > dialog
eliminado.tauri > updater
movido aplugins > updater
.tauri > systemTray
renombrado aapp > trayIcon
.tauri > pattern
movido aapp > security > pattern
.tauri > bundle
movido a nivel superior.tauri > bundle > dmg
movido abundle > macOS > dmg
tauri > bundle > deb
movido abundle > linux > deb
tauri > bundle > appimage
movido abundle > linux > appimage
tauri > bundle > macOS > license
eliminado, utilizabundle > licenseFile
en su lugar.tauri > bundle > windows > wix > license
eliminado, utilizabundle > licenseFile
en su lugar.tauri > bundle > windows > nsis > license
eliminado, utilizabundle > licenseFile
en su lugar.build > withGlobalTauri
movido aapp > withGlobalTauri
.build > distDir
renombrado afrontendDist
.build > devPath
renombrado adevUrl
.
Referencia de la API de configuración de Tauri 2.0
Nuevas características de Cargo
- linux-protocol-body: Habilita el análisis personalizado del cuerpo de solicitud del protocolo, permitiendo que el IPC lo utilice. Requiere webkit2gtk 2.40.
Características de Cargo eliminadas
- reqwest-client: reqwest es ahora el único cliente soportado.
- reqwest-native-tls-vendored: utiliza
native-tls-vendored
en su lugar. - process-command-api: utiliza el plugin
shell
en su lugar. (véanse las instrucciones en la sección siguiente). - shell-open-api: utiliza el plugin
shell
en su lugar. (véanse las instrucciones en la sección siguiente). - windows7-compat: movido al plugin
notification
. - updater: Updater es ahora un plugin.
- linux-protocol-headers: Ahora habilitado por defecto desde que actualizamos nuestra versión mínima de webkit2gtk.
- system-tray: renombrado a
tray-icon
.
Cambios en el Crate de Rust
- El módulo
api
ha sido eliminado. Cada módulo de API se puede encontrar en un plugin de Tauri. - El módulo
api::dialog
ha sido eliminado. Utilizatauri-plugin-dialog
en su lugar. Migración - El módulo
api::file
ha sido eliminado. Utilizastd::fs
de Rust en su lugar. - El módulo
api::http
ha sido eliminado. Utilizatauri-plugin-http
en su lugar. Migración - El módulo
api::ip
ha sido reescrito y movido atauri::ipc
. Revisa las nuevas APIs, especialmentetauri::ipc::Channel
. - Las funciones del módulo
api::path
ytauri::PathResolved
se han movido atauri::Manager::path
. Migración - Las APIs
api::process::Command
,tauri::api::shell
ytauri::Manager::shell_scope
han sido eliminadas. Utilizatauri-plugin-shell
en su lugar. Migración - Las funciones
api::process::current_binary
ytauri::api::process::restart
se han movido atauri::process
. - El módulo
api::version
ha sido eliminado. Utiliza el crate semver en su lugar. - Los métodos
App::clipboard_manager
yAppHandle::clipboard_manager
han sido eliminados. Utilizatauri-plugin-clipboard
en su lugar. Migración - El método
App::get_cli_matches
ha sido eliminado. Utilizatauri-plugin-cli
en su lugar. Migración - Los métodos
App::global_shortcut_manager
yAppHandle::global_shortcut_manager
han sido eliminados. Utilizatauri-plugin-global-shortcut
en su lugar. Migración - El método
Manager::fs_scope
ha sido eliminado. El alcance del sistema de archivos puede ser accedido a través detauri_plugin_fs::FsExt
. - Ahora,
Plugin::PluginApi
recibe una configuración de plugin como segundo argumento. - El método
Plugin::setup_with_config
ha sido eliminado. Utiliza el actualizadotauri::Plugin::PluginApi
en su lugar. - Los métodos
scope::ipc::RemoteDomainAccessScope::enable_tauri_api
yscope::ipc::RemoteDomainAccessScope::enables_tauri_api
han sido eliminados. Habilita cada plugin del núcleo individualmente mediantescope::ipc::RemoteDomainAccessScope::add_plugin
en su lugar. - El módulo
scope::IpcScope
ha sido eliminado, utilizascope::ipc::Scope
en su lugar. - El módulo
scope::IpcScope
ha sido eliminado, utilizascope::ipc::Scope
en su lugar. - Los módulos
scope::FsScope
,scope::GlobPattern
yscope::FsScopeEvent
han sido eliminados, utilizascope::fs::Scope
,scope::fs::Pattern
yscope::fs::Event
respectivamente. - El módulo
updater
ha sido eliminado. Utilizatauri-plugin-updater
en su lugar. Migración - El campo
Env.args
ha sido eliminado, utiliza el campoEnv.args_os
en su lugar. - Las APIs
Menu
,MenuEvent
,CustomMenuItem
,Submenu
,WindowMenuEvent
,MenuItem
yBuilder::on_menu_event
han sido eliminadas. Migración - Las APIs
SystemTray
,SystemTrayHandle
,SystemTrayMenu
,SystemTrayMenuItemHandle
,SystemTraySubmenu
,MenuEntry
ySystemTrayMenuItem
han sido eliminadas. Migración
Cambios en la API de JavaScript
El paquete @tauri-apps/api
ya no proporciona módulos no centrales. Sólo se exportan los anteriores módulos tauri
(ahora core
), path
, event
y window
. Todos los demás se han trasladado a plugins.
- El módulo
@tauri-apps/api/tauri
ha sido renombrado a@tauri-apps/api/core
. Migración - El módulo
@tauri-apps/api/cli
ha sido eliminado. Utiliza@tauri-apps/plugin-cli
en su lugar. Migración - El módulo
@tauri-apps/api/clipboard
ha sido eliminado. Utiliza@tauri-apps/plugin-clipboard
en su lugar. Migración - El módulo
@tauri-apps/api/dialog
ha sido eliminado. Utiliza@tauri-apps/plugin-dialog
en su lugar. Migración - El módulo
@tauri-apps/api/fs
ha sido eliminado. Utiliza@tauri-apps/plugin-fs
en su lugar. Migración - El módulo
@tauri-apps/api/global-shortcut
ha sido eliminado. Utiliza@tauri-apps/plugin-global-shortcut
en su lugar. Migración - El módulo
@tauri-apps/api/http
ha sido eliminado. Utiliza@tauri-apps/plugin-http
en su lugar. Migración - El módulo
@tauri-apps/api/os
ha sido eliminado. Utiliza@tauri-apps/plugin-os
en su lugar. Migración - El módulo
@tauri-apps/api/notification
ha sido eliminado. Utiliza@tauri-apps/plugin-notification
en su lugar. Migración - El módulo
@tauri-apps/api/process
ha sido eliminado. Utiliza@tauri-apps/plugin-process
en su lugar. Migración - El módulo
@tauri-apps/api/shell
ha sido eliminado. Utiliza@tauri-apps/plugin-shell
en su lugar. Migración - El módulo
@tauri-apps/api/updater
ha sido eliminado. Utiliza@tauri-apps/plugin-updater
en su lugar. Migración - El módulo
@tauri-apps/api/window
ha sido renombrado a@tauri-apps/api/webviewWindow
. Migración
Cambios en las variables de entorno
La mayoría de las variables de entorno leídas y escritas por el CLI de Tauri fueron renombradas por consistencia y prevención de errores:
TAURI_PRIVATE_KEY
->TAURI_SIGNING_PRIVATE_KEY
TAURI_KEY_PASSWORD
->TAURI_SIGNING_PRIVATE_KEY_PASSWORD
TAURI_SKIP_DEVSERVER_CHECK
->TAURI_CLI_NO_DEV_SERVER_WAIT
TAURI_DEV_SERVER_PORT
->TAURI_CLI_PORT
TAURI_PATH_DEPTH
->TAURI_CLI_CONFIG_DEPTH
TAURI_FIPS_COMPLIANT
->TAURI_BUNDLER_WIX_FIPS_COMPLIANT
TAURI_DEV_WATCHER_IGNORE_FILE
->TAURI_CLI_WATCHER_IGNORE_FILENAME
TAURI_TRAY
->TAURI_LINUX_AYATANA_APPINDICATOR
TAURI_APPLE_DEVELOPMENT_TEAM
->APPLE_DEVELOPMENT_TEAM
TAURI_PLATFORM
->TAURI_ENV_PLATFORM
TAURI_ARCH
->TAURI_ENV_ARCH
TAURI_FAMILY
->TAURI_ENV_FAMILY
TAURI_PLATFORM_VERSION
->TAURI_ENV_PLATFORM_VERSION
TAURI_PLATFORM_TYPE
->TAURI_ENV_PLATFORM_TYPE
TAURI_DEBUG
->TAURI_ENV_DEBUG
Sistema de eventos
El sistema de eventos fue rediseñado para ser más fácil de usar. En lugar de depender de la fuente del evento, ahora tiene una implementación más simple que se basa en los objetivos del evento.
- La función
emit
ahora emite el evento a todos los escuchadores de eventos. - Se agregó una nueva función
emit_to
para desencadenar un evento a un objetivo específico. emit_filter
ahora filtra en función deEventTarget
en lugar de una ventana.- Se renombró
listen_global
alisten_any
. Ahora escucha todos los eventos independientemente de sus filtros y objetivos.
Soporte Multiwebview
Tauri v2 introduce soporte multiwebview actualmente detrás de una bandera de característica unstable
.
Para admitirlo, renombramos el tipo de ventana Rust Window
a WebviewWindow
y la función get_window
del Manager a get_webview_window
.
El tipo de API JS WebviewWindow
ahora se reexporta desde @tauri-apps/api/webviewWindow
en lugar de @tauri-apps/api/window
.
Pasos Detallados de Migración
Escenarios comunes que puedes encontrar al migrar tu aplicación de Tauri 1.0 a Tauri 2.0.
Migrar al Módulo Core
El módulo @tauri-apps/api/tauri
fue renombrado a @tauri-apps/api/core
.
Simplemente renombra la importación del módulo:
Migrar al plugin CLI
Las APIs de Rust App::get_cli_matches
y JavaScript @tauri-apps/api/cli
han sido eliminadas. Utiliza en su lugar el plugin @tauri-apps/plugin-cli
:
- Agrega a las dependencias de Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
Migrar al Plugin de Portapapeles
Las APIs de Rust App::clipboard_manager
,AppHandle::clipboard_manager
y la API JavaScript @tauri-apps/api/clipboard
han sido eliminadas. En su lugar, utiliza el plugin @tauri-apps/plugin-clipboard-manager
:
Migrar al Plugin de diálogo
Las APIs de Rust tauri::api::dialog
y JavaScript @tauri-apps/api/dialog
han sido eliminadas. Utiliza en su lugar el plugin @tauri-apps/plugin-dialog
:
- Agrega a las dependencias de Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
Migrar al Plugin del Sistema de Archivos
Las APIs de Rust App::get_cli_matches
y JavaScript @tauri-apps/api/fs
han sido eliminadas. En su lugar, utiliza std::fs
para Rust y el plugin @tauri-apps/plugin-fs
para JavaScript:
- Agrega a las dependencias de Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
Algunas funciones y tipos han sido renombrados o eliminados:
- Se eliminó el alias
Dir
para el enum, utilizaBaseDirectory
. - Las interfaces y alias de tipo
FileEntry
,FsBinaryFileOption
,FsDirOptions
,FsOptions
,FsTextFileOption
yBinaryFileContents
han sido eliminados y reemplazados con nuevas interfaces adecuadas para cada función. createDir
fue renombrado amkdir
.readBinaryFile
fue renombrado areadFile
.removeDir
fue eliminado y reemplazado conremove
.removeFile
fue eliminado y reemplazado conremove
.renameFile
fue eliminado y reemplazado conrename
.writeBinaryFile
fue renombrado awriteFile
.
Utiliza las funciones de Rust std::fs
.
Migrar al Plugin de Atajos Globales
Las APIs de Rust App::global_shortcut_manager
y AppHandle::global_shortcut_manager
, y JavaScript @tauri-apps/api/global-shortcut
han sido eliminadas. Utiliza en su lugar el plugin @tauri-apps/plugin-global-shortcut
:
- Agrega a las dependencias de Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
Migrar al Plugin HTTP
Las APIs de Rust tauri::api::http
y JavaScript @tauri-apps/api/http
han sido eliminadas. Utiliza el plugin @tauri-apps/plugin-http
en su lugar:
- Agrega las dependencias a Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
El plugin HTTP reexporta reqwest para que puedas consultar su documentación para obtener más información.
Migrar al Plugin de Notificaciones
Las APIs de Rust tauri::api::notification
y JavaScript @tauri-apps/api/notification
han sido eliminadas. Utiliza el plugin @tauri-apps/plugin-notification
en su lugar:
- Agrega a las dependencias de Cargo:
- Úsalo en proyectos con JavaScript o Rust:
Migrar al Módulo de Menú
Las APIs de Rust Menu
fueron movidas al módulo tauri::menu
y refactorizadas para utilizar el muda crate.
Usa tauri::menu::MenuBuilder
Utiliza tauri::menu::MenuBuilder
en lugar de tauri::Menu
. Ten en cuenta que su constructor toma una instancia de Manager (uno de App
, AppHandle
o WebviewWindow
) como argumento:
Usa tauri::menu::PredefinedMenuItem
Utiliza tauri::menu::PredefinedMenuItem
en lugar de tauri::MenuItem
:
Utiliza tauri::menu::MenuItemBuilder
Utiliza tauri::menu::MenuItemBuilder
en lugar de tauri::CustomMenuItem
:
Utiliza tauri::menu::SubmenuBuilder
Utiliza tauri::menu::SubmenuBuilder
en lugar de tauri::Submenu
:
tauri::Builder::menu
ahora toma un cierre porque el menú necesita una instancia de Manager para ser construido. Consulta la documentación para obtener más información.
Eventos de Menú
La API tauri::Builder::on_menu_event
de Rust fue eliminada. En su lugar, usa tauri::App::on_menu_event
o tauri::AppHandle::on_menu_event
.
Ten en cuenta que hay dos formas de verificar qué elemento del menú fue seleccionado: mover el elemento al cierre del controlador de eventos y comparar los identificadores, o definir un identificador personalizado para el elemento a través del constructor with_id y usar esa cadena de identificación para comparar.
Migrar al Plugin OS
Las APIs tauri::api::os
de Rust y @tauri-apps/api/os
de JavaScript han sido eliminadas. Utiliza en su lugar el plugin @tauri-apps/plugin-os
:
- Agrega a las dependencias de Cargo:
- Usa en el proyecto JavaScript o Rust:
Migrar al Plugin Process
Las APIs tauri::api::process
de Rust y @tauri-apps/api/process
de JavaScript han sido eliminadas. Utiliza en su lugar el plugin @tauri-apps/plugin-process
:
- Agrega a las dependencias de Cargo:
- Úsalo en proyectos con JavaScript o Rust:
Migrar al Plugin Shell
Las APIs tauri::api::shell
de Rust y @tauri-apps/api/shell
de JavaScript han sido eliminadas. Utiliza en su lugar el plugin @tauri-apps/plugin-shell
:
- Agrega a las dependencias de Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
- Abrir una URL
- Generar un proceso hijo y obtener el código de estado
- Crear un proceso hijo y capturar su salida
- Crea un proceso hijo y lee sus eventos de forma asíncrona:
Migrar al Módulo de Tray Icon
Las APIs SystemTray
de Rust fueron renombradas a TrayIcon
para mayor consistencia. Las nuevas APIs pueden encontrarse en el módulo tray
de Rust.
Usa tauri::tray::TrayIconBuilder
Utiliza tauri::tray::TrayIconBuilder
en lugar de tauri::SystemTray
:
Consulta TrayIconBuilder para más información.
Migrar a Menú
Utiliza tauri::menu::Menu
en lugar de tauri::SystemTrayMenu
, tauri::menu::Submenu
en lugar de tauri::SystemTraySubmenu
, y tauri::menu::PredefinedMenuItem
en lugar de tauri::SystemTrayMenuItem
. Migración
Eventos de Bandeja
tauri::SystemTray::on_event
ha sido dividido en tauri::tray::TrayIconBuilder::on_menu_event
y tauri::tray::TrayIconBuilder::on_tray_icon_event
:
Migrar al Plugin de Actualizaciones
El diálogo incorporado con una verificación de actualización automática ha sido eliminado. En su lugar, utiliza las APIs de Rust y JS para verificar e instalar actualizaciones.
Las APIs tauri::updater
de Rust y @tauri-apps/api-updater
de JavaScript han sido eliminadas. Para establecer un objetivo de actualización personalizado con @tauri-apps/plugin-updater
:
- Agrega a las dependencias de Cargo:
- Úsalo en un proyecto con JavaScript o Rust:
Para comprobar actualizaciones:
Para establecer un objetivo de actualización personalizado:
Migrar de Path a Tauri Manager
Las funciones del módulo tauri::api::path
de Rust y tauri::PathResolver
se han trasladado a tauri::Manager::path
:
Migrar a la nueva API de Ventanas
En el lado de Rust, Window
fue renombrado a WebviewWindow
y su constructor WindowBuilder
ahora se llama WebviewWindowBuilder
.
Además, la función Manager::get_window
fue renombrada a get_webview_window
y
la API parent_window
de la ventana fue renombrada a parent_raw
para admitir una API de ventana principal de alto nivel.
En el lado de JavaScript, la clase WebviewWindow
ahora se exporta en la ruta @tauri-apps/api/webviewWindow
.
La función onMenuClicked
fue eliminada, ahora puedes interceptar eventos de menú al crear un menú en JavaScript en su lugar.
Migrar de Binarios Externos Incrustados (Sidecar)
En Tauri v1, los binarios externos y sus argumentos se definían en la lista blanca. En la v2, utiliza el nuevo sistema de permisos. Lee Migración de Permisos para más información.
En el lado de JavaScript, asegúrate de Migrar al Plugin Shell.
En el lado de Rust, la API tauri::api::process
ha sido eliminada. Usa tauri_plugin_shell::ShellExt
y las APIs tauri_plugin_shell::process::CommandEvent
en su lugar. Lee la guía de Incrustar Binarios Externos para ver cómo.
El indicador de características “process-command-api” ha sido eliminado en la v2. Por lo tanto, ejecutar los binarios externos ya no requiere que esta característica esté definida en la configuración de Tauri.
Migrar Permisos
La lista blanca v1 ha sido reescrita a un sistema completamente nuevo para permisos que funciona para plugins individuales y es mucho más configurable para soportar múltiples ventanas y URL remotas. Este nuevo sistema funciona como una lista de control de acceso (ACL) donde puedes permitir o denegar comandos, asignar permisos a un conjunto específico de ventanas y dominios, y definir alcances de acceso.
Para habilitar permisos para tu aplicación, debes crear archivos de capacidades dentro de la carpeta src-tauri/capabilities
, y Tauri configurará automáticamente todo lo demás para ti.
El comando migrate
de la CLI analiza automáticamente tu lista blanca v1 y genera el archivo de capacidad asociado.
Para obtener más información sobre permisos y capacidades, consulta la documentación.
© 2024 Tauri Contributors. CC-BY / MIT