Saltar al contenido principal
Tutoriales

Desarrollar Aplicaciones Móviles con SvelteKit y Capacitor

Aprende a crear una aplicación móvil utilizando SvelteKit, Capacitor, y mejora la interfaz de usuario nativa con Konsta UI.

Martin Donadieu

Martin Donadieu

Gerente de Contenido

Desarrollar Aplicaciones Móviles con SvelteKit y Capacitor

En este tutorial, comenzaremos con una nueva SvelteKit aplicación y transitaremos a un desarrollo móvil nativo utilizando Capacitor. De manera opcional, también puedes integrar Konsta UI para una interfaz de usuario móvil Tailwind CSS mejorada.

Capacitor te permite convertir fácilmente tu aplicación web de SvelteKit en una aplicación móvil nativa sin necesidad de realizar modificaciones significativas o aprender una nueva habilidad como React Native.

Sigue este paso a paso para transformar tu aplicación SvelteKit en una aplicación móvil utilizando Capacitor y, si lo deseas, mejora tu interfaz de usuario móvil con Konsta UI.

¿Sobre Capacitor?

CapacitorJS es un juego de cambio! Puede integrarse de manera eficiente en cualquier proyecto web, envolviendo tu aplicación en una vista web nativa y generando proyectos de Xcode y Android Studio nativos para ti. Sus plugins proporcionan acceso a características de dispositivos nativos como la cámara a través de un puente de JavaScript.

Capacitor te permite crear una fantástica aplicación móvil nativa sin ningún setup complicado o curva de aprendizaje empinada. Su API y funcionalidad simplificada lo hacen fácil de integrar en tu proyecto. ¡Te sorprenderá la simplicidad de lograr una aplicación nativa completamente funcional con Capacitor!

Preparando tu aplicación SvelteKit

Para crear una nueva aplicación SvelteKit, ejecuta el siguiente comando:

npm create svelte@latest my-app
cd my-app
npm install
npm run build

Después de ejecutar el build comando, deberías ver un nuevo dist carpeta en la raíz de tu proyecto.

Esta carpeta se utilizará por Capacitor más adelante, pero por ahora, necesitamos configurarla correctamente.

Agregar Capacitor a tu aplicación SvelteKit

Para empaquetar cualquier aplicación web en un contenedor móvil nativo, debemos seguir unos pocos pasos inicialmente. Después de eso, es tan simple como ejecutar un comando solo sync command.

Primero, instale el Capacitor CLI como una dependencia de desarrollo y configúrelo dentro de su proyecto. Durante la configuración, puede pulsar “enter” para aceptar los valores predeterminados para el nombre y el ID de paquete.

Segundo, instale el paquete principal y los paquetes relevantes para las plataformas iOS y Android.

Finalmente, agregue las plataformas, y Capacitor creará carpetas para cada plataforma en la raíz de su proyecto:

# Install the Capacitor CLI locally
npm install -D @capacitor/cli

# Initialize Capacitor in your SvelteKit project
npx cap init

# Install the required packages
npm install @capacitor/core @capacitor/ios @capacitor/android

# Add the native platforms
npx cap add ios
npx cap add android

En este punto, debería ver nuevas ios y android carpetas en su proyecto de SvelteKit.

Estos son proyectos nativos reales!

Para acceder al proyecto de Android más tarde, necesitarás instalar Android Studio. Para iOS, necesitarás un Mac y deberías instalar Xcode.

Además, debes encontrar un archivo capacitor.config.ts en tu proyecto, que contiene algunas configuraciones básicas Capacitor utilizadas durante la sincronización. La única cosa a la que debes prestar atención es el webDir, que debe apuntar al resultado de tu comando de compilación. Actualmente, está incorrecto.

Para corregir esto, abre el archivo capacitor.config.ts y actualiza la carpetaWeb:

import { CapacitorConfig } from '@capacitor/cli'

const config: CapacitorConfig = {
  appId: 'com.example.app',
  appName: 'my-app',
  webDir: 'build',
}

export default config

Una vez que hemos actualizado nuestros ajustes de Capacitor, vamos a cambiar nuestro proyecto de Sveltekit a una aplicación estática descargando el paquete de adaptador estático adecuado:

npm i -D @sveltejs/adapter-static

Después de instalar el paquete, necesitaremos alterar svelte.config.js archivo desde el adaptador automático a estático:

import adapter from '@sveltejs/adapter-static'
import { vitePreprocess } from '@sveltejs/kit/vite'

/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
// for more information about preprocessors
  preprocess: vitePreprocess(),

  kit: {
    // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
    // If your environment is not supported or you settled on a specific environment, switch out the adapter.
    // See https://kit.svelte.dev/docs/adapters for more information about adapters.
    adapter: adapter({
      // default options are shown. On some platforms
      // these options are set automatically — see below
      pages: 'build',
      assets: 'build',
      fallback: null,
      precompress: false,
      strict: true
    })
  }
}

export default config

Con el svelte.config.js actualizado, necesitaremos agregar una opción de pre-renderizado creando una página +layout.js para src/rutas y solo agrega la siguiente exportación a Después de agregar y actualizar la:

export const prerender = true

página, necesitaremos agregar nuestras plataformas móviles, reconstruir nuestro proyecto para crear la carpeta de construcción Puedes hacerlo ejecutando los siguientes comandos: El primer comando construirá tu proyecto SvelteKit y copiará la construcción estática, mientras que el segundo comando

sincronizará todas las web __CAPGO_KEEP_0__ en los lugares adecuados de las plataformas nativas para que puedan ser visualizadas en una aplicación.

npm run build
npx cap sync

build npm run build The first command will build your SvelteKit project and copy the static build, while the second command will sync all the web __CAPGO_KEEP_0__ into the right places of the native platforms so they can be displayed in an app. npx cap sync will sync all the web code into the right places of the native platforms so they can be displayed in an app.

Además, el comando de sincronización podría actualizar las plataformas nativas e instalar plugins, por lo que cuando instales nuevos Capacitorplugins npx cap sync , es hora de ejecutar

de nuevo.

Sin darse cuenta, has completado el proceso, así que veamos la aplicación en un dispositivo!

Desarrollar y Desplegar Aplicaciones Nativas Para desarrollar aplicaciones iOS, necesitas tener Xcode instalado, y para aplicaciones Android, necesitas tener Android Studio

If you’re new to native mobile development, you can use the Capacitor CLI to easily open both native projects:

npx cap open ios
npx cap open android

Una vez que hayas configurado tus proyectos nativos, desplegar tu aplicación en un dispositivo conectado es fácil. En Android Studio, solo necesitas esperar a que todo esté listo, y puedes desplegar tu aplicación en un dispositivo conectado sin cambiar ninguna configuración. Aquí tienes un ejemplo:

android-studio-run

En Xcode, debes configurar tu cuenta de firma para desplegar tu aplicación en un dispositivo real en lugar de solo en el simulador. Si no lo has hecho antes, Xcode te guía a través del proceso (pero de nuevo, debes estar inscrito en el Programa de Desarrolladores). Después de eso, puedes simplemente pulsar play para ejecutar la aplicación en tu dispositivo conectado, que puedes seleccionar en la parte superior. Aquí tienes un ejemplo:

xcode-run

Felicidades! Has desplegado con éxito tu aplicación web SvelteKit en un dispositivo móvil. Aquí tienes un ejemplo:

sveltekit-mobile-app

Pero espera, hay una forma más rápida de hacer esto durante el desarrollo…

Capacitor Live Reload

Por ahora, probablemente estás acostumbrado a tener hot reload con todas las marcos modernas, y la buena noticia es que puedes tener la misma funcionalidad en un dispositivo móvil con un mínimo esfuerzo!

Habilita acceso a tu aplicación localmente hospedada con live reload en su red al tener la aplicación Capacitor cargar el contenido desde la URL específica.

El primer paso es determinar la dirección IP local. Si está utilizando un Mac, puede encontrar esto ejecutando el siguiente comando en la terminal:

ipconfig getifaddr en0

En Windows, ejecuta:

ipconfig

Luego busque la dirección IPv4.

Podemos instruir a Capacitor para que cargue la aplicación directamente desde el servidor agregando otra entrada a nuestro capacitor.config.ts archivo:

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.app',
  appName: 'my-app',
  webDir: 'dist',
  bundledWebRuntime: false,
  server: {
    url: 'http://192.168.x.xx:3000',
    cleartext: true
  }
};

export default config;

Asegúrese de utilizar la dirección IP y el puerto correctoscomo se muestra en el ejemplo anterior.

Ahora, podemos aplicar estos cambios copiándolos a nuestro proyecto nativo:

npx cap copy

El copy El comando es similar a syncpero solo copiar los cambios realizados en la carpeta web y la configuración, sin actualizar el proyecto nativo.

Puede desplegar su aplicación una vez más a través de Android Studio o Xcode. Después de eso, si cambia algo en su aplicación Svelte, la aplicación se recargará automáticamente y mostrará los cambios!

Tenga en cuenta que si instala nuevos plugins como la cámara, todavía requiere una reconstrucción del proyecto nativo. Esto se debe a que los archivos nativos se han modificado, y no se puede hacer en tiempo real.

Tenga en cuenta que debe utilizar la IP y el puerto correctos en su configuración. El bloque code anterior muestra el puerto por defecto de SvelteKit con fines de demostración.

Usando Capacitor Plugins

Vamos a ver cómo utilizar un plugin Capacitor en acción, que mencionamos antes. Para hacer esto, podemos instalar un plugin simple ejecutando:

npm i @capacitor/share

There’s nothing fancy about the Compartir plugin, pero muestra el diálogo de compartir nativo! Para esto, ahora solo necesitamos importar el paquete y llamar a la share() función desde nuestra aplicación, así que cambiemos el src/routes/index.svelte

<script>
  import { Share } from '@capacitor/share';

  async function share() {
    await Share.share({
      title: 'Open Youtube',
      text: 'Check new video on youtube',
      url: 'https://www.youtube.com',
      dialogTitle: 'Share with friends'
    });
  }
</script>

<h1>Welcome to SvelteKit and Capacitor!</h1>
<button on:click={share}>Share now!</button>

a esto:

npx cap sync

Como se mencionó anteriormente, cuando instalamos nuevos plugins, necesitamos realizar una operación de sincronización y luego volver a desplegar la aplicación en nuestro dispositivo. Para hacer esto, ejecuta el siguiente comando:

Después de pulsar el botón, puedes ver el hermoso diálogo de compartir nativo en acción!

Agregar Konsta UI Para usar Konsta UI en tu aplicación Nuxt 3, necesitas tener tailwind ya instalado

npm i konsta

Además, necesitas modificar tu tailwind.config.js file:

// import konstaConfig config
const konstaConfig = require('konsta/config')

// wrap config with konstaConfig config
module.exports = konstaConfig({
  content: [
    './src/routes/**/*.{svelte}',
    './src/components/**/*.{svelte}',
  ],
  darkMode: 'media', // or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
})

konstaConfig extendrá la configuración de Tailwind CSS predeterminada (o la personalizada) con algunas variantes y utilidades adicionales requeridas para Konsta UI.

Ahora necesitamos configurar el componente principal App para poder establecer algunos parámetros globales (como theme).

Necesitamos envolver toda la aplicación con App en el src/routes/+layout.svelte:

<script>
  import { App } from 'konsta/svelte';
</script>

<App theme="ios">
  <slot />
</App>

Página de Ejemplo

Ahora que todo está configurado, podemos utilizar componentes de Konsta UI Svelte en nuestras páginas SvelteKit.

Por ejemplo, abre src/routes/index.svelte y cambia a lo siguiente:

<script>
  import {
    Page,
    Navbar,
    Block,
    Button,
    List,
    ListItem,
    Link,
    BlockTitle,
  } from 'konsta/svelte';
</script>

<Page>
  <Navbar title="My App" />

  <Block strong>
    <p>
      Here is your SvelteKit & Konsta UI app. Let's see what we have here.
    </p>
  </Block>
  <BlockTitle>Navigation</BlockTitle>
  <List>
    <ListItem href="/about/" title="About" />
    <ListItem href="/form/" title="Form" />
  </List>

  <Block strong class="flex space-x-4">
    <Button>Button 1</Button>
    <Button>Button 2</Button>
  </Block>
</Page>

If el recarga en vivo está fuera de sincronía después de instalar todos los componentes necesarios, intenta reiniciar todo. Una vez que hayas hecho eso, deberías ver una aplicación móvil con una apariencia algo nativa, construida con SvelteKit y Capacitor!

Deberías ver la siguiente página como resultado:

konsta-sveltekit

Conclusión

Capacitor es una excelente opción para construir aplicaciones nativas basadas en un proyecto web existente, ofreciendo una forma sencilla de compartir code y mantener una interfaz de usuario consistente.

Y con la adición de Capgo, es aún más fácil agregar actualizaciones en vivo a tu aplicación, asegurando que tus usuarios siempre tengan acceso a las últimas características y correcciones de errores.

Si deseas aprender a agregar Capgo a tu aplicación SvelteKit, echa un vistazo al próximo artículo:

Aprende cómo Capgo puede ayudarte a construir aplicaciones mejoradas más rápido ¡Regístrate para una cuenta gratuita hoy.

Sigue adelante desde Building Mobile Apps con SvelteKit y Capacitor

Si estás utilizando Building Mobile Apps con SvelteKit y Capacitor para planificar la automatización de CI/CD, conecta con Capgo CI/CD para el flujo de trabajo del producto en Capgo CI/CD, Capgo Compilaciones Nativas para el flujo de trabajo del producto en Capgo Compilaciones Nativas, Capgo Integraciones para el flujo de trabajo del producto en Capgo Integraciones, Integración de CI/CD para el detalle de implementación en Integración de CI/CD, y Acciones de GitHub Integración para el detalle de implementación en Acciones de GitHub Integración.

Actualizaciones en vivo para aplicaciones Capacitor

Cuando un error en la capa web está activo, envía la corrección a través de Capgo en lugar de esperar días para la aprobación de la tienda de aplicaciones. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen en el camino de revisión normal.

Iniciar Ahora

Últimas noticias de nuestro Blog

Capgo te da las mejores perspectivas que necesitas para crear una aplicación móvil verdaderamente profesional.