Для разработчиков

Для разработки библиотеки рекомендуется использовать Vite как сборщик и pnpm в качестве менеджера пакетов. Vite обеспечивает гибкую систему сборки, позволяя подключать исходные файлы зависимостей без необходимости модифицировать package.json. pnpm, в свою очередь, идеально подходит для работы в монорепозиториях, упрощая одновременную разработку нескольких взаимосвязанных пакетов.

Пример настроенного проекта

Подключение модулей графической библиотеки

Для подключения графических модулей рекомендуется использовать Git submodules. Подмодули следует размещать в директории:
<root-folder>/src/submodules:

$ cd src/submodules
$ git submodule add git@github.com:IncartDev/jagm-visualizator.git
$ git submodule add git@github.com:IncartDev/jagm-chart.git
$ git submodule add git@github.com:IncartDev/jagm-core.git
$ git submodule add git@github.com:IncartDev/jsfilters.git
$ git submodule add git@github.com:IncartDev/signal-generator-js.git
$ git submodule add git@github.com:IncartDev/ts-utils.git

Конфигурация pnpm

Для создания монорепозитория необходимо сконфигурировать workspace. Для этого требуется создать файл pnpm-workspace.yaml в корне проекта:

# ./pnpm-workspace.yaml
  packages:
    - "src/submodules/*"
    - "src/submodules/jagm-visualizator/js/*"
    - "src/submodules/jagm-visualizator/*"
    - "src/submodules/signal-generator-js/*"

Пути указываются относительно корня проекта и соответствуют структуре, формируемой при подключении подмодулей

Конфигурация package.json

В файле package.json необходимо указать зависимости с использованием workspace-ссылок:

{
  "dependencies": {
      "@incartdev/jagm-chart": "workspace:*",
      "@incartdev/jagm-core": "workspace:*",
      "@incartdev/jagm-visualizator": "workspace:*",
      "@incartdev/jagm-visualizator-network": "workspace:*",
      "@incartdev/jagm-visualizator-network-msgpack": "workspace:*",
      "@incartdev/jagm-visualizator-vue": "workspace:*",
      "@incartdev/jsfilters": "workspace:*",
      "@incartdev/ts-utils": "workspace:*"
  },
}

Кофнигурация Vite

Для корректной работы с исходным кодом библиотек рекомендуется настроить alias-пути в файле vite.config.js, vite.config.ts или vite.config.mts:

resolve: {
    alias: {
      '@incartdev/jagm-chart': path.resolve(__dirname, './src/submodules/jagm-chart/src'),
      '@incartdev/jagm-core': path.resolve(__dirname, './src/submodules/jagm-core/src'),
      '@incartdev/ts-utils': path.resolve(__dirname, './src/submodules/ts-utils/src'),
      '@incartdev/signal-generator-js': path.resolve(__dirname, './src/submodules/signal-generator-js/core/src'),
      '@incartdev/signal-generator-js-msgpack': path.resolve(__dirname, './src/submodules/signal-generator-js/msgpack/src'),
      '@incartdev/jsfilters': path.resolve(__dirname, './src/submodules/jsfilters/src'),
      '@incartdev/jagm-visualizator': path.resolve(__dirname, './src/submodules/jagm-visualizator/js/visualizator/src'),
      '@incartdev/jagm-visualizator-network-msgpack': path.resolve(__dirname, './src/submodules/jagm-visualizator/js/network-msgpack/src'),
      '@incartdev/jagm-visualizator-network': path.resolve(__dirname, './src/submodules/jagm-visualizator/js/network/src'),
      '@incartdev/jagm-visualizator-vue': path.resolve(__dirname, './src/submodules/jagm-visualizator/vue/src'),
    },
}

Определение alias позволяет работать с исходным кодом модуля напрямую — без необходимости изменять точки входа в package.json или пересобирать модуль при каждом изменении

Установка зависимостей

$ pnpm install

Запуск проекта

$ pnpm run dev

Работа с submodules

Обновление подмодулей

$ git submodule update --remote --merge

Клонирование репозитория с подмодулями

$ git clone --recurse-submodules <repository_name>

Инициализация подмодулей в пустых директориях

$ git submodule update --init

Доступ к содержимому по ссылке возможен только для авторизованных пользователей GitHub, являющихся участниками организации IncartDev
Ссылка на ресурс

Предыдущая