Разработка пакета
Клонирование и установка
git clone https://gitlab.com/diealltagsfeen/frontend.npm.serviceslibrary.git
cd frontend.npm.serviceslibrary
npm installТокены для работы с реестром уже прописаны в .npmrc репозитория — дополнительная настройка не требуется.
Структура проекта
src/
├── config.js # Инициализация и конфигурация клиента
├── index.js # Главный экспорт (re-export всех модулей)
├── services/ # API-сервисы (clientService, userService и т.д.)
│ └── index.js # Барель-файл сервисов
├── models/ # Модели данных (enum-маппинги)
│ └── index.js # Барель-файл моделей
├── mappers/ # Мапперы для преобразования данных
│ └── index.js # Барель-файл мапперов
└── utils/ # Утилиты (форматирование телефонов, координаты)Git-воркфлоу
Ветвление
master— стабильная ветка для релизовdevelop— основная ветка разработкиfeature/*— фичевые ветки, создаются отdevelop
Внесение изменений
- Создайте ветку от
develop:bashgit checkout develop git pull git checkout -b feature/DIE-XXXX - Внесите правки
- Закоммитьте и запушьте:bash
git add . git commit -m "DIE-XXXX - Описание изменений" git push -u origin feature/DIE-XXXX - Создайте Merge Request в
developчерез GitLab
Добавление нового сервиса
Создайте файл
src/services/myService.js:jsimport { getAxios, getHost, notify } from '../config.js' class MyService { /** Описание метода */ async GetTable(params, mapper) { const route = getHost('business') + `Api/MyEntity` const response = await getAxios().get(route) if (response.data && response.data.successfully) { return mapper ? mapper(response.data) : response.data } else { return null } } } export const myService = new MyService()Зарегистрируйте экспорт в
src/services/index.js:jsexport { myService } from './myService.js'
Добавление маппера
- Создайте файл
src/mappers/myMappers.jsс функциями трансформации - Зарегистрируйте экспорт в
src/mappers/index.js
Добавление модели
- Создайте файл
src/models/myModels.jsс enum-маппингами - Зарегистрируйте экспорт в
src/models/index.js
Сборка
npm run buildVite собирает src/index.js в единый ES-модуль dist/index.js. Зависимость axios не бандлится — она указана как external.
Релиз новой версии
После мержа изменений в develop, публикация выполняется одной командой:
npm run release:patch # баг-фиксы (1.1.0 → 1.1.1)
npm run release:minor # новый функционал (1.1.0 → 1.2.0)
npm run release:major # ломающие изменения (1.0.0 → 2.0.0)Команда автоматически:
- Соберёт пакет (
npm run build) - Обновит версию в
package.jsonи создаст git-коммит с тегом - Опубликует пакет в реестр (
npm publish) - Запушит коммит и тег в репозиторий
Токен для публикации
Для публикации необходим токен с правами на запись. Этот токен создаёт и выдаёт по запросу Owner репозитория. Самостоятельно создать его нельзя.
Обновление пакета в проектах-потребителях
После публикации новой версии:
npm update @diealltagsfeen/frontend-api-clientИли конкретная версия:
npm install @diealltagsfeen/frontend-api-client@1.2.0Локальная разработка с проектом-потребителем
Для тестирования изменений без публикации можно использовать npm link или настроить alias в quasar.config.js проекта-потребителя (см. скилл api_service_dev).