Для разработчиков
Для разработки библиотеки рекомендуется использовать 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
Ссылка на ресурс