1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-baserow

Клонировать/Скачать
boilerplate.md 9.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 26.06.2025 16:02 92285f5

Шаблон

С помощью шаблона плагина вы можете легко создать новый плагин и настроить среду разработки Docker, которая устанавливает Baserow в качестве зависимости. Он включает линтеры и может легко устанавливаться через Cookiecutter.

Структура, используемая для плагинов Baserow, еще не окончательна и может измениться для поддержки установки плагинов через маркетплейс, доступный в Baserow.

Создание плагина

Чтобы использовать шаблон плагина, сначала необходимо установить инструмент Cookiecutter (pip install cookiecutter).

После установки Cookiecutter выполните следующую команду, чтобы создать новый плагин Baserow из нашего шаблона. В этом руководстве мы назовем наш плагин "My Baserow Plugin", однако вы можете выбрать свое собственное имя плагина, когда вас об этом попросит Cookiecutter.

Python-модуль зависит от выбранного вами имени плагина. Например, если мы выберем "My Baserow Plugin", имя Django-приложения должно быть my_baserow_plugin, а имя модуля Nuxt будет my-baserow-plugin.

cookiecutter gl:baserow/baserow --directory plugin-boilerplate
project_name [My Baserow Plugin]: 
project_slug [my-baserow-plugin]: 
project_module [my_baserow_plugin]:

Если вы не видите никаких ошибок, это означает, что ваш плагин был создан.

Запуск среды разработки

Теперь, чтобы запустить вашу среду разработки, выполните следующие команды:

cd my-baserow-plugin
# Включите Docker buildkit
export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1
# Установите эти переменные, чтобы образы создавались и запускались с тем же uid/gid, что и у вашего пользователя.
# Это предотвращает проблемы с правами доступа при монтировании локальных источников в образы.
export PLUGIN_BUILD_UID=$(id -u)
export PLUGIN_BUILD_GID=$(id -g)
# Вы можете опционально `export COMPOSE_FILE=docker-compose.dev.yml`, чтобы не использовать флаг `-f docker-compose.dev.yml` каждый раз.
docker-compose -f docker-compose.dev.yml up -d --build
docker-compose -f docker-compose.dev.yml logs -f

Среда разработки теперь запущена и доступна по адресу http://localhost.

Вы можете проверить, что плагин работает, посетив демонстрационный URL http://localhost/starting.

Первые изменения

Наиболее важная часть внутри папки my-baserow-plugin — это папка plugins/my_baserow_plugin. Здесь вы найдете весь код вашего плагина. Для примера мы добавим простой эндпоинт, который всегда возвращает один и тот же ответ, и покажем этот текст на странице в веб-фронтенде.

Изменения на стороне бэкенда

Мы хотим предоставить эндпоинт по следующему URL http://localhost/api/my-baserow-plugin/example/, который возвращает JSON-ответ, содержащий заголовок и некоторое содержимое. Создайте/измените следующие файлы:

Сначала откройте plugins/my_baserow_plugin/backend/src/my_baserow_plugin/api/views.py и добавьте свой новый представление ниже существующего StartingView.

class ExampleView(APIView):
    permission_classes = (AllowAny,)

    def get(self, request):
        return Response({
            'title': 'Example title',
            'content': 'Example text'
        })

Затем измените plugins/my_baserow_plugin/backend/src/my_baserow_plugin/api/urls.py и добавьте URL-шаблон для нового представления.

from django.urls import re_path

from .views import StartingView, ExampleView

app_name = 'my_baserow_plugin.api'
urlpatterns = [
    re_path(r"starting/$", StartingView.as_view(), name="starting"),
    re_path(r'example/$', ExampleView.as_view(), name='example'),
]

С этими изменениями вы должны иметь возможность посетить эндпоинт http://localhost/api/my-baserow_plugin/example/, который должен возвращать желаемое содержимое.

Изменения на стороне веб-фронтенда

Теперь, когда у нас есть эндпоинт, мы хотим показать ответ на странице в веб-фронтенде. Добавьте/измените следующий код.

Измените plugins/my_baserow_plugin/web-frontend/modules/my-baserow-plugin/routes.js и добавьте свой новый маршрут после существующего маршрута 'starting':

import path from 'path'

export const routes = [
    {
        name: 'starting',
        path: '/starting',
        component: path.resolve(__dirname, 'pages/starting.vue'),
    },
    {
        name: 'example',
        path: '/example',
        component: path.resolve(__dirname, 'pages/example.vue'),
    },
]

Добавьте plugins/my_baserow_plugin/web-frontend/modules/my-baserow-plugin/pages/example.vue

<template>
  <div>
    {{ content }}
  </div>
</template>

<script>
export default {
  async asyncData({app}) {
    // TODO Убедитесь, что вы измените этот префикс URL на имя вашего плагина с разделением нижними подчеркиваниями и в нижнем регистре.
    const response = await app.$client.get('my_baserow_plugin/example/')
    return response.data
  },
  head() {
    return {
      title: this.title,
    }
  },
}
</script>

Теперь вам нужно перезапустить сервер разработки Nuxt, так как маршруты были изменены и загружаются модулем module.js. Выполните docker-compose -f docker-compose.dev.yml restart, чтобы сделать это.

Если вы теперь посетите http://localhost/example в своем браузере, вы должны увидеть страницу, содержащую заголовок и содержимое, определенные в эндпоинте.

Теперь у вас должно быть базовое представление о том, как вносить изменения в Baserow через шаблон плагина. Изменения, о которых мы здесь говорили, конечно, приведены для примера и предназначены только для того, чтобы дать вам представление о том, как это работает.

Линтеры

После того как вы запустили среду разработки и все контейнеры работают, вы можете выполнить следующие команды для запуска линтеров.

  • docker-compose -f docker-compose.dev.yml exec my-baserow-plugin /baserow.sh backend-cmd bash -c bash
    • Теперь вы находитесь в оболочке внутри контейнера разработки Baserow.
    • cd /baserow/data/plugins/my_baserow_plugin/web-frontend/
    • Теперь вы можете выполнить любые команды, которые вам нужны:
      • yarn run eslint --fix
      • yarn run stylelint
      • yarn add your_dependency
    • cd /baserow/data/plugins/my_baserow_plugin/backend/
    • Теперь вы можете выполнить любые команды, которые вам нужны:
      • black .
      • flake8
  • Чтобы запустить тесты базы данных pytest в вашем контейнере разработки, необходимо убедиться, что у вашего пользователя базы данных есть разрешение CREATEDB. Для этого вы можете выполнить:
    • docker-compose -f docker-compose.dev.yml exec -T my-baserow-plugin /baserow/supervisor/docker-postgres-setup.sh run <<< "ALTER USER baserow CREATEDB;"
  • Теперь для запуска тестов базы данных pytest вы можете:
    • docker-compose -f docker-compose.dev.yml exec my-baserow-plugin /baserow.sh backend-cmd bash -c bash
    • cd /baserow/data/plugins/my_baserow_plugin/backend/
    • pytest

Дальнейшие шаги

Руководство Создание плагина содержит дополнительную информацию о создании плагинов. Также см. README.md в корне папки вашего плагина.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-baserow.git
git@api.gitlife.ru:oschina-mirror/mirrors-baserow.git
oschina-mirror
mirrors-baserow
mirrors-baserow
develop