Template
fix: make template build, lint and test cleanly out of the box
This commit is contained in:
@@ -4,21 +4,26 @@
|
||||
|
||||
Шаблон включает серверную часть на Go и клиентскую часть на React/TypeScript, настроенный билд через Makefile, пример REST API и базовую структуру Redux store.
|
||||
|
||||
Подробное руководство по разработке плагинов: [developers.loop.ru/integrate/plugin-development](https://developers.loop.ru/integrate/plugin-development).
|
||||
|
||||
> **Совместимость.** Возможности плагинов в Loop соответствуют Mattermost 9.11.7. Поэтому серверная часть зафиксирована на `github.com/mattermost/mattermost/server/public v0.1.6` — в этой версии ровно те методы API и хуки, что есть в Loop, и компилятор не даст вызвать недоступный метод. Не обновляйте этот пакет.
|
||||
|
||||
## Требования
|
||||
|
||||
| Инструмент | Версия |
|
||||
|-----------|--------|
|
||||
| Go | 1.21+ |
|
||||
| Go | 1.24+ |
|
||||
| Node.js | 22+ |
|
||||
| Yarn | 4.x |
|
||||
| Yarn | 4.x (`corepack enable`) |
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
### 1. Клонировать шаблон
|
||||
|
||||
```bash
|
||||
git clone <url-репозитория> my-plugin
|
||||
git clone https://git.wilix.dev/loop/loop-plugin-starter-template.git my-plugin
|
||||
cd my-plugin
|
||||
rm -rf .git && git init
|
||||
```
|
||||
|
||||
### 2. Переименовать плагин
|
||||
@@ -45,7 +50,13 @@ module git.example.com/your-org/my-plugin
|
||||
Затем обновите все импорты в `server/`:
|
||||
|
||||
```bash
|
||||
find server/ -type f -name "*.go" | xargs sed -i 's|git.wilix.dev/loop/loop-plugin-starter-template|git.example.com/your-org/my-plugin|g'
|
||||
# macOS
|
||||
grep -rl 'git.wilix.dev/loop/loop-plugin-starter-template' server build | \
|
||||
xargs sed -i '' 's|git.wilix.dev/loop/loop-plugin-starter-template|git.example.com/your-org/my-plugin|g'
|
||||
|
||||
# Linux / WSL
|
||||
grep -rl 'git.wilix.dev/loop/loop-plugin-starter-template' server build | \
|
||||
xargs sed -i 's|git.wilix.dev/loop/loop-plugin-starter-template|git.example.com/your-org/my-plugin|g'
|
||||
```
|
||||
|
||||
### 4. Установить зависимости и собрать
|
||||
@@ -68,6 +79,7 @@ make dist
|
||||
├── plugin.json # Манифест плагина (ID, имя, версия)
|
||||
├── Makefile # Команды сборки
|
||||
├── .env.example # Пример переменных окружения
|
||||
├── assets/ # Файлы, которые попадут в архив (иконка и т. п.)
|
||||
│
|
||||
├── server/
|
||||
│ ├── main.go # Точка входа серверной части
|
||||
@@ -76,7 +88,7 @@ make dist
|
||||
│ ├── api.go # HTTP маршруты и обработчики
|
||||
│ ├── configuration.go # Конфигурация плагина
|
||||
│ ├── store.go # Работа с key-value хранилищем
|
||||
│ └── telemetry.go # Телеметрия
|
||||
│ └── telemetry.go # Телеметрия (включается ключами RudderStack при сборке)
|
||||
│
|
||||
└── webapp/
|
||||
└── src/
|
||||
@@ -124,14 +136,16 @@ make dist
|
||||
## Makefile: команды сборки
|
||||
|
||||
```bash
|
||||
make # Линтинг, тесты и полная сборка
|
||||
make dist # Полная сборка (server + webapp + tar.gz)
|
||||
make server # Только серверная часть
|
||||
make webapp # Только клиентская часть
|
||||
make check-style # Линтинг (golangci-lint + eslint)
|
||||
make check-style # Линтинг (golangci-lint v2 + eslint)
|
||||
make test # Запуск тестов
|
||||
make clean # Очистить артефакты сборки
|
||||
make deploy # Сборка и деплой на сервер (требует .env)
|
||||
make watch # Сборка + hot reload webapp
|
||||
make watch # Пересборка webapp при изменениях (загрузка — make deploy-from-watch)
|
||||
make deps # Установить golangci-lint и goi18n
|
||||
```
|
||||
|
||||
Полный список команд: `make help`
|
||||
@@ -148,8 +162,9 @@ cp .env.example .env
|
||||
|-----------|----------|
|
||||
| `MM_SERVICESETTINGS_SITEURL` | URL вашего Loop-сервера (для деплоя) |
|
||||
| `MM_ADMIN_TOKEN` | Токен администратора (для деплоя через `make deploy`) |
|
||||
| `MM_SERVICESETTINGS_ENABLEDEVELOPER` | `true` — билд только под текущую ОС (ускоряет разработку) |
|
||||
| `MM_DEBUG` | `true` — билд без оптимизаций (для отладчика dlv) |
|
||||
| `MM_SERVICESETTINGS_ENABLEDEVELOPER` | `true` — билд только под текущую ОС и linux-amd64 (ускоряет разработку, но не запустится на ARM-сервере) |
|
||||
| `MM_DEBUG` | `true` — билд без оптимизаций (для отладчика dlv) и webapp с source maps |
|
||||
| `MM_RUDDER_CALLS_PROD`, `MM_RUDDER_DATAPLANE_URL` | Ключи RudderStack для серверной телеметрии. Пустые — телеметрия выключена |
|
||||
|
||||
## Деплой
|
||||
|
||||
@@ -157,7 +172,8 @@ cp .env.example .env
|
||||
|
||||
1. Соберите плагин: `make dist`
|
||||
2. Загрузите `dist/<plugin-id>-<version>.tar.gz` в Loop:
|
||||
**Администрирование → Управление плагинами → Загрузить плагин**
|
||||
**Системная консоль → Плагины → Управление плагинами → Загрузить плагин**.
|
||||
Загрузка должна быть разрешена на сервере: `PluginSettings.EnableUploads = true` (или `MM_PLUGINSETTINGS_ENABLEUPLOADS=true`)
|
||||
|
||||
### Деплой через `make deploy`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user