Saltar al contenido principal

Cómo personalizar scripts de build con Capacitor CLI

Aprende a personalizar tus build scripts con Capacitor CLI para despliegues eficientes y actualizaciones de apps a medida en todas las plataformas.

Cómo personalizar scripts de build con Capacitor CLI Capgo ilustración del blog

Capacitor CLI te permite personalizar el proceso de build de tu app para plataformas iOS, Android y web. Ajustando los scripts de build, puedes:

  • Acelerar las actualizaciones: Publica cambios al instante, sin esperar a las tiendas de apps.
  • Controla los despliegues: Revierte actualizaciones o dirígete a grupos de usuarios específicos.
  • Protege tu app: Usa cifrado para proteger las actualizaciones.
  • Optimiza builds: Configura según las necesidades de cada plataforma.

Resumen rápido de funciones clave:

  • Archivos de configuración: Usa capacitor.config.json y package.json para gestionar los ajustes de build.
  • Scripts personalizados: Añade tareas prebuild y postbuild para automatizar el proceso.
  • Hooks de build: Ejecuta code en etapas específicas del proceso de build.
  • Variables de entorno: Simplifica los builds según el entorno con .env archivos.

Capgo, una herramienta de deployment, mejora este proceso con actualizaciones automáticas, seguimiento de versiones y optimización global del rendimiento. Sigue leyendo para aprender a configurar y personalizar tus build scripts para máxima eficiencia.

Presentamos Capacitor Configurar

Sitio web de documentación de Capacitor Framework

Proceso de build por defecto en Capacitor

Entender cómo Capacitor gestiona su proceso de build por defecto es crucial para personalizarlo con éxito. A continuación, analizaremos el proceso de build de Capacitor CLI y sus archivos de configuración clave.

Pasos de build estándar

Capacitor utiliza un proceso paso a paso para transformar tu web app en builds específicos para cada plataforma. Esto es lo que ocurre durante el proceso de build por defecto:

Fase Descripción Resultado
Build web Compila los recursos web con las herramientas de tu framework Bundle web optimizado
Copiar recursos Mueve los recursos web a las carpetas de la plataforma nativa Directorios de assets específicos de la plataforma
Native Build Ejecuta comandos de build específicos de la plataforma Binarios listos para desplegar
Verificación Verifica la integridad del build y las dependencias Estado del build y advertencias

Archivos de configuración principales

Dos archivos de configuración clave definen cómo Capacitor gestiona tus builds:

archivo capacitor.config.json
Este es el archivo de configuración principal de tu proyecto de Capacitor. Establece parámetros importantes para tus builds:

{
  "appId": "com.example.app",
  "appName": "MyApp",
  "webDir": "dist",
  "bundledWebRuntime": false,
  "plugins": {
    "SplashScreen": {
      "launchShowDuration": 3000
    }
  }
}
  • appId: Un identificador único para tu app.
  • appName: El nombre de tu app.
  • webDir: Especifica dónde debe buscar Capacitor los assets web (ej., dist).
  • plugins: Permite configurar ajustes específicos de plugins, como las opciones de SplashScreen.

package.json
Este archivo incluye los scripts de build y las dependencias que afectan al proceso de build:

{
  "scripts": {
    "build": "npm run build:web && cap sync",
    "build:web": "vite build",
    "cap:build": "cap build"
  }
}
  • El webDir configuración en capacitor.config.json le indica a Capacitor dónde localizar tus assets web compilados para incluirlos en los builds nativos.
  • Tras realizar cambios en capacitor.config.json, debes ejecutar cap sync para asegurar que tus proyectos nativos se actualicen.

A continuación, veremos cómo puedes modificar estos ajustes para personalizar aún más tus builds.

Modificar los scripts de build

Puedes ajustar el proceso de build por defecto de Capacitor para adaptarlo mejor a tu proyecto. Así es como se hace:

Ajustes del archivo de configuración

Puedes ajustar el proceso de build editando el capacitor.config.json archivo. Aquí tienes un ejemplo de configuración:

{
  "appId": "com.example.app",
  "webDir": "www",
  "server": {
    "hostname": "localhost",
    "androidScheme": "https",
    "iosScheme": "https",
    "allowNavigation": ["*.example.com"]
  },
  "android": {
    "buildOptions": {
      "keystorePath": "release.keystore",
      "keystorePassword": "mypassword",
      "keystoreAlias": "release",
      "keystoreAliasPassword": "mypassword"
    }
  },
  "ios": {
    "scheme": "App",
    "automaticProvisioning": true
  }
}

Estos son algunos ajustes clave que puedes modificar:

  • webDir: Especifica dónde se encuentran tus assets web compilados.
  • server: Configura el servidor de desarrollo, incluidos el hostname y los permisos de navegación.
  • android/ios: Permite ajustes de build específicos por plataforma, como detalles del keystore para Android u opciones de provisioning para iOS.

Crear scripts de NPM

Para agilizar tu workflow, añade scripts personalizados de NPM a tu package.json archivo. Aquí tienes un ejemplo:

{
  "scripts": {
    "prebuild": "node ./scripts/prepare-env.js",
    "build": "npm run build:web && cap sync",
    "build:web": "vite build",
    "build:ios": "cap build ios --release",
    "build:android": "cap build android --release",
    "postbuild": "node ./scripts/notify-completion.js"
  }
}
  • prebuild y postbuild: Úsalos para tareas como configurar el entorno o enviar notificaciones al terminar el build.
  • build:platform: Comandos específicos de la plataforma para compilar apps Android o iOS.

Puedes llevar la automatización al siguiente nivel añadiendo build hooks.

Configuración de build hooks

Para un control más avanzado, usa build hooks para ejecutar code personalizados en puntos específicos del proceso de build. Aquí tienes un ejemplo de configuración en capacitor.config.ts:

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

const config: CapacitorConfig = {
  appId: 'com.example.app',
  plugins: {
    CapacitorHooks: {
      beforeBuild: async () => {
        console.log('Running pre-build tasks...');
        // Add your pre-build tasks here
      },
      afterBuild: async () => {
        console.log('Running post-build tasks...');
        // Add your post-build tasks here
      }
    }
  }
};

export default config;

Con los build hooks, puedes:

  • Validar requisitos antes de iniciar el build
  • Transformar assets durante el proceso
  • Disparar notificaciones en puntos clave
  • Actualizar números de versión automáticamente
  • Ejecuta tests automatizados sin fricciones

Este enfoque te ofrece mayor flexibilidad y control sobre todo el ciclo de vida del build.

Personalización avanzada del build

En proyectos grandes, optimizar el proceso de build marca la diferencia. Así puedes gestionar builds por entorno y personalizaciones de plataforma de forma efectiva.

Variables de entorno

Configura variables de entorno creando archivos .env separados para cada entorno:

  • .env.development
  • .env.staging
  • .env.production

Luego, configura tu script de build para cargar el archivo adecuado según el entorno:

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

export default defineConfig({
  ios: {
    buildConfig: {
      environment: process.env.BUILD_ENV || 'development',
      configurations: {
        development: {
          signing: {
            debug: true,
            automaticProvisioning: true
          }
        },
        production: {
          signing: {
            release: true,
            provisioningProfile: 'dist/profile.mobileprovision'
          }
        }
      }
    }
  }
});

Puedes modificar estos ajustes para cumplir con los requisitos específicos de cada plataforma.

Builds específicos por plataforma

Para personalizar builds de Android e iOS, usa la siguiente estructura:

const platformConfig = {
  android: {
    buildType: process.env.BUILD_TYPE || 'debug',
    keystoreConfig: {
      path: process.env.KEYSTORE_PATH,
      password: process.env.KEYSTORE_PASSWORD,
      alias: process.env.KEYSTORE_ALIAS
    }
  },
  ios: {
    scheme: process.env.APP_SCHEME || 'App',
    xcodePreferences: {
      automaticSigning: false,
      developmentTeam: process.env.DEVELOPMENT_TEAM
    }
  }
};

Estas configuraciones te permiten adaptar los builds a cada plataforma, asegurando despliegues más fluidos.

Característica Android iOS
Símbolos de depuración ProGuard archivos de mapping archivos dSYM
Variantes de build debug, release, staging debug, release
Firma de Code Gestión de Keystore Perfiles de aprovisionamiento
Gestión de assets optimización de res/drawable Catálogos de assets

Otros consejos para optimizar tus builds:

  • Usar actualizaciones parciales para ahorrar tiempo durante los despliegues
  • Configurar el tracking de errores para identificar problemas rápidamente
  • Crear sistemas de canales para versiones beta
  • Habilitar cifrado end-to-end para una distribución segura

Al combinarlas con herramientas como Capgo para analytics y actualizaciones seguras, estas técnicas te dan más control sobre tu proceso de despliegue [1].

Problemas y soluciones con build scripts

Al trabajar con configuraciones de build personalizadas, resolver errores rápidamente es crucial para que el proceso de build fluya sin problemas.

Solución de errores comunes

Muchos problemas en los scripts de build se deben a la configuración del entorno o a dependencias. Aquí te explicamos cómo solucionar los más comunes:

Faltan variables de entorno

Si te aparece un error como este:

error: Cannot find environment configuration for BUILD_ENV

Puedes solucionarlo creando un .env.local archivo en el directorio raíz de tu proyecto. Aquí tienes un ejemplo:

BUILD_ENV=development
CAPACITOR_PLATFORM=ios
BUILD_TYPE=debug

Fallos de build por plataforma

Para errores de firma en Android, usa este comando:

npx cap build android --keystorePassword=$KEYSTORE_PASSWORD --keystoreAlias=$KEYSTORE_ALIAS

Para problemas con los provisioning profiles en iOS, prueba esto:

npx cap build ios --configuration=release --type=development
Tipo de error Causa común Solución
Configuración de firma Faltan detalles del keystore Configurar KEYSTORE_PATH y credenciales
Entorno de build Variables no definidas Crear específicos de plataforma .env archivos
Dependencias Desajustes de versión Actualizar package.json y sincronización

Tras aplicar las correcciones, asegúrate de que tus cambios sean sólidos ejecutando pruebas de build exhaustivas.

Probar los build scripts

Una vez resueltos los errores, valida tus build scripts con estos pasos:

  • Verificación automatizada: Ejecuta comandos clave para confirmar que el proceso de build funciona como se espera.
npm run build
npx cap sync
npx cap copy
  • Validación del entorno: Comprueba si faltan variables de entorno antes de iniciar el build.
const requiredVars = ['BUILD_ENV', 'KEYSTORE_PATH'];
requiredVars.forEach(varName => {
  if (!process.env[varName]) {
    throw new Error(`Missing required env var: ${varName}`);
  }
});
  • Depuración de build scripts: Añade scripts detallados para detectar posibles problemas durante el build.
{
  "scripts": {
    "build:debug": "NODE_ENV=development npx cap build --verbose",
    "build:release": "NODE_ENV=production npx cap build --verbose"
  }
}

Consejos adicionales para las pruebas:

  • Usa Docker contenedores para aislar los builds.
  • Valida los archivos de configuración antes de iniciar el proceso.
  • Prueba con múltiples Node.js versiones.
  • Confirma que se cumplen los requisitos de cada plataforma.
  • Monitorea el rendimiento del build para posibles mejoras.

Capgo Funciones de build

Interfaz del dashboard de Capgo Live Update

Capgo lleva los build scripts al siguiente nivel con despliegue automatizado, mejorando la eficiencia y simplificando el proceso.

Actualizaciones rápidas de apps

Capgo’s update performance is impressive:

  • 95% de los usuarios activos recibe actualizaciones en menos de 24 horas.
  • 82% de tasa de éxito en la entrega de actualizaciones a nivel mundial.
  • Un tiempo de respuesta medio de API de 434ms a nivel global.

La plataforma utiliza actualizaciones parciales, lo que significa que solo se descargan los cambios. Este enfoque reduce el uso de ancho de banda y acelera el proceso de actualización. Además, todo el proceso de build está completamente automatizado, ahorrando tiempo y esfuerzo.

Automatización de builds

Capgo funciona a la perfección con las principales plataformas de CI/CD, ofreciendo una variedad de integraciones:

Plataforma de CI/CD Funciones de integración Beneficios
Acciones de GitHub Builds automatizados, triggers de deploy Despliegue continuo
GitLab CI Automatización de pipelines, control de versiones Workflow optimizado
Jenkins Workflows personalizados, build hooks Escalable para empresas

Configurar un build automatizado suele costar unos $300 al mes, mucho más asequible en comparación con las soluciones tradicionales que pueden llegar a 6.000 $ al año.

Estándares de seguridad

Capgo prioriza la seguridad con un framework robusto que incluye:

  • End-to-end encryption for update packages.
  • Gestión segura de claves.
  • Cumplimiento de las directrices de Apple y Google.

Funciones de control de versiones

  • Opciones de rollback instantáneo.
  • Seguimiento de versiones de despliegue.
  • Gestión de canales de actualización para lanzamientos escalonados.

Este framework de seguridad ha sido probado rigurosamente en cientos de aplicaciones empresariales. Para equipos que necesitan seguridad adicional, Capgo también ofrece soluciones self-hosted con configuraciones personalizables.

El sistema de canales de Capgo ofrece flexibilidad en la distribución de actualizaciones. Los desarrolladores pueden dirigir versiones específicas a grupos de usuarios determinados, ideal para beta testing o lanzamientos graduales.

Resumen

Resumen de pasos de build

Los scripts de build personalizados permiten despliegues automatizados y consistentes mediante build hooks, variables de entorno y comandos específicos de cada plataforma. Estos procesos sientan una base sólida para las mejoras de despliegue que permite Capgo.

Beneficios de Capgo

Capgo simplifica el despliegue: ha entregado con éxito más de 23,5 millones de actualizaciones en 750 apps en producción [1]. Su sistema de actualizaciones parciales reduce tanto el uso de ancho de banda como el tiempo de despliegue.

La plataforma ofrece actualizaciones rápidas, optimización de rendimiento global, cifrado de extremo a extremo para la seguridad y un sistema de distribución flexible basado en canales. Este enfoque permite actualizaciones dirigidas, beta testing y el cumplimiento de las guías de las app stores manteniendo un marco de seguridad sólido.

Sigue leyendo: Cómo personalizar scripts de build con Capacitor CLI

Si estás usando Cómo personalizar scripts de build con Capacitor CLI para planificar la automatización de CI/CD, conéctalo con CI/CD de Capgo para el flujo de trabajo del producto en Capgo CI/CD, Native Builds de Capgo para el flujo de trabajo del producto en Capgo Native Builds, Integraciones de Capgo para el flujo de trabajo del producto en Capgo Integraciones, Integración CI/CD para los detalles de implementación de CI/CD Integration, y Integración con GitHub Actions para los detalles de implementación de GitHub Actions Integration.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.