Манифест расширения

В Quasar манифест расширения (extension manifest) представляет собой центральный файл конфигурации, который определяет свойства, возможности и поведение расширения. Он необходим для того, чтобы Quasar CLI корректно распознал расширение, интегрировал его в проект и обеспечил взаимодействие с другими компонентами экосистемы.


Структура манифеста

Манифест расширения обычно располагается в корне пакета расширения и имеет формат index.js или extension.json. Основные поля манифеста включают:

  • name – уникальное имя расширения, которое будет использоваться в CLI и при публикации на npm. Например: "my-quasar-extension".
  • description – краткое описание функциональности расширения.
  • version – версия расширения, соответствующая стандарту semver.
  • author – автор или команда разработчиков.
  • type – тип расширения (app-extension или cli-extension). В большинстве случаев используется app-extension.
  • boot – путь к файлу boot, который автоматически подключается в проекте при инициализации.
  • components – массив компонентов, предоставляемых расширением.
  • directives – массив пользовательских директив.
  • plugins – массив плагинов, которые будут зарегистрированы в приложении.
  • extras – дополнительные файлы и ресурсы, например, CSS, иконки или шрифты.
  • prompts – конфигурация интерактивных вопросов при установке расширения через CLI.
  • extends – возможность наследования другого расширения или функционала.

Пример минимального манифеста index.js для расширения Quasar:

module.exports = function (api) {
  api.extendQuasarConf((conf) => {
    conf.boot.push('~my-extension/boot/index.js');
    conf.framework.plugins.push('Notify');
  });

  return {
    name: 'my-extension',
    version: '1.0.0',
    description: 'Расширение для уведомлений',
    author: 'Developer Name',
    type: 'app-extension'
  };
};

Поле boot

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

Пример использования boot-файла:

// boot/index.js
import { Notify } from 'quasar';

export default ({ app, router, store }) => {
  app.config.globalProperties.$notify = Notify;
};

Здесь объект app предоставляет доступ к глобальному экземпляру Vue, что позволяет регистрировать компоненты и плагины напрямую.


Подключение компонентов и директив

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

components: [
  'MyButton',
  'MyCard'
],
directives: [
  'MyTooltip',
  'MyScroll'
]

Каждый компонент должен быть экспортирован из соответствующего файла внутри пакета расширения.


Плагины и расширение конфигурации

Расширение может добавлять свои плагины или изменять конфигурацию Quasar. Это делается через метод extendQuasarConf в манифесте:

api.extendQuasarConf((conf) => {
  conf.framework.config.notify = { position: 'top-right', timeout: 3000 };
});

Также можно добавлять новые маршруты, изменять тему или подключать дополнительные модули.


Вопросы при установке (prompts)

Поле prompts позволяет создавать интерактивные диалоги при установке расширения. Это особенно полезно для выбора настроек или активации определённых функций:

prompts: {
  useFeatureX: {
    type: 'confirm',
    message: 'Хотите активировать Feature X?',
    default: true
  }
}

Ответы пользователя могут быть использованы для динамического конфигурирования расширения.


Расширение других расширений

Через поле extends можно наследовать функционал другого расширения. Это позволяет создавать цепочку расширений и повторно использовать общие части:

extends: 'some-existing-extension'

При этом все компоненты, плагины и boot-файлы базового расширения автоматически подключаются к текущему проекту.


Особенности публикации

  • Расширения Quasar публикуются как npm-пакеты с префиксом @quasar/.
  • Манифест должен быть корректно настроен для обеспечения совместимости с Quasar CLI.
  • Необходимо следить за версиями Vue и Quasar, чтобы избежать конфликтов.

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