Сборка и подпись приложений

Quasar использует собственную систему сборки на основе Webpack и предоставляет гибкие возможности конфигурации для различных платформ: веб, мобильные (Cordova/Capacitor) и настольные (Electron). Основным инструментом является команда quasar build, которая компилирует проект в оптимизированный пакет для выбранной цели.

Конфигурационный файл quasar.conf.js

В файле quasar.conf.js сосредоточена вся настройка сборки:

  • build — раздел для веб-версии приложения. Включает параметры:

    • vueRouterMode — режим роутинга (hash или history).
    • env — определение переменных окружения.
    • extendWebpack(cfg) — функция для расширения конфигурации Webpack.
    • analyze — генерация отчета о размере бандла.
    • gzip и preloadChunks — оптимизация загрузки.
  • cordova / capacitor — параметры мобильной сборки, такие как версия SDK, ориентация экрана и плагины.

  • electron — настройки настольной сборки, включая архитектуры (x64, arm64), сборку и подпись.

build: {
  vueRouterMode: 'history',
  env: {
    API_URL: JSON.stringify('https://api.example.com')
  },
  extendWebpack(cfg) {
    cfg.module.rules.push({
      test: /\.txt$/,
      loader: 'raw-loader'
    });
  },
  analyze: true
}

Оптимизация сборки

Quasar автоматически разделяет код на чанки и поддерживает динамический импорт компонентов. Для увеличения производительности:

  • Включение tree-shaking для удаления неиспользуемого кода.
  • Использование lazy-loading для страниц:
const MyPage = () => import('pages/MyPage.vue')
  • Минификация CSS и JS через встроенные плагины Webpack (TerserPlugin, CssMinimizerPlugin).

Подпись приложений

Подпись важна для мобильных и настольных приложений, чтобы гарантировать их подлинность и соответствие требованиям платформ.

Android (Cordova/Capacitor)

  • Генерация ключа подписи:
keytool -genkey -v -keystore my-release-key.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000
  • Указание ключа в build.gradle:
signingConfigs {
    release {
        storeFile file('my-release-key.keystore')
        storePassword 'password'
        keyAlias 'myalias'
        keyPassword 'password'
    }
}
  • Подпись автоматически применяется при сборке quasar build -m capacitor -T android --release.

iOS (Capacitor)

  • Используется Xcode для настройки профиля подписи (Provisioning Profile) и сертификата (Developer/Distribution Certificate).
  • В Quasar можно указать сборку с релизной конфигурацией:
quasar build -m capacitor -T ios --release

Xcode применяет подпись в процессе сборки .ipa.

Electron

  • Для Windows и macOS подпись выполняется через встроенные плагины electron-builder.
  • Конфигурация подписи в quasar.conf.js:
electron: {
  builder: {
    appId: 'com.example.app',
    mac: {
      identity: 'Developer ID Application: Example Co'
    },
    win: {
      certificateFile: 'cert.pfx',
      certificatePassword: 'password'
    }
  }
}
  • Подпись гарантирует, что ОС не будет блокировать установку приложения.

Инкрементальная сборка и кэширование

Quasar поддерживает Hot Module Replacement (HMR) для быстрого обновления при разработке и кэширование бандлов при production-сборке. В quasar.conf.js можно настроить cache и distDir для хранения промежуточных результатов сборки, что ускоряет последующие компиляции.

Многоцелевые сборки

Quasar позволяет создавать пакеты сразу для нескольких платформ с одной конфигурации:

quasar build -m pwa
quasar build -m capacitor -T android
quasar build -m electron

Каждый таргет использует свои оптимизации и механизмы подписи, обеспечивая единый процесс сборки и публикации приложения на разных платформах.

Практики безопасности подписи

  • Хранить ключи и сертификаты в безопасных хранилищах (keystore, Keychain, CI/CD secrets).
  • Никогда не коммитить приватные ключи в репозиторий.
  • Проверять цифровую подпись после сборки командой:
jarsigner -verify -verbose -certs app-release.apk

Интеграция CI/CD

Автоматизация сборки и подписи в Quasar часто осуществляется через GitHub Actions, GitLab CI или Jenkins. Стандартная последовательность:

  1. Установка зависимостей (npm ci).
  2. Кэширование node_modules и .quasar для ускорения сборки.
  3. Компиляция приложения (quasar build).
  4. Применение подписи.
  5. Публикация артефактов (.apk, .ipa, .exe, .dmg) на соответствующие платформы.

Использование Quasar позволяет централизованно управлять сборкой и подписью приложений, снижая вероятность ошибок и упрощая многоплатформенную разработку.