Skip to content

Разработка пакета

Клонирование и установка

bash
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

Внесение изменений

  1. Создайте ветку от develop:
    bash
    git checkout develop
    git pull
    git checkout -b feature/DIE-XXXX
  2. Внесите правки
  3. Закоммитьте и запушьте:
    bash
    git add .
    git commit -m "DIE-XXXX - Описание изменений"
    git push -u origin feature/DIE-XXXX
  4. Создайте Merge Request в develop через GitLab

Добавление нового сервиса

  1. Создайте файл src/services/myService.js:

    js
    import { 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()
  2. Зарегистрируйте экспорт в src/services/index.js:

    js
    export { myService } from './myService.js'

Добавление маппера

  1. Создайте файл src/mappers/myMappers.js с функциями трансформации
  2. Зарегистрируйте экспорт в src/mappers/index.js

Добавление модели

  1. Создайте файл src/models/myModels.js с enum-маппингами
  2. Зарегистрируйте экспорт в src/models/index.js

Сборка

bash
npm run build

Vite собирает src/index.js в единый ES-модуль dist/index.js. Зависимость axios не бандлится — она указана как external.

Релиз новой версии

После мержа изменений в develop, публикация выполняется одной командой:

bash
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)

Команда автоматически:

  1. Соберёт пакет (npm run build)
  2. Обновит версию в package.json и создаст git-коммит с тегом
  3. Опубликует пакет в реестр (npm publish)
  4. Запушит коммит и тег в репозиторий

Токен для публикации

Для публикации необходим токен с правами на запись. Этот токен создаёт и выдаёт по запросу Owner репозитория. Самостоятельно создать его нельзя.

Обновление пакета в проектах-потребителях

После публикации новой версии:

bash
npm update @diealltagsfeen/frontend-api-client

Или конкретная версия:

bash
npm install @diealltagsfeen/frontend-api-client@1.2.0

Локальная разработка с проектом-потребителем

Для тестирования изменений без публикации можно использовать npm link или настроить alias в quasar.config.js проекта-потребителя (см. скилл api_service_dev).