Пользовательские плагины CSS и JS в Grails

Я строю плагин Grails (grails-myorg.zip) который будет содержать повторно используемый код / ​​артефакты, которые должны использоваться каждым приложением Grails в нашей организации. Это включает в себя пользовательские файлы CSS/JS, которые помогают нашим приложениям выглядеть единообразно.

Мне интересно, каков наилучший ход действий здесь:

  • Создать grails-myorg-themes.zip плагин, который просто включает в себя повторно используемые файлы CSS и JS, а затем делает его плагином / зависимостью времени выполнения (используя BuildConfig.groovy) основной grails-myorg.zip плагин; или же
  • Поместите файлы CSS/JS в основной grails-myorg.zip подключаемый модуль, но затем используйте подключаемый модуль ресурсов Grails для настройки файлов для всех последующих зависимостей.

В конечном итоге единственным требованием является:

Каждый раз, когда разработчик включает в себя основной grails-myorg.zip Плагин является частью плагинов их приложения, тогда пользовательские файлы CSS/JS будут доступны (через URL) во время выполнения для HTML-файлов приложения. Таким образом, у них есть возможность включить стили CSS и другие вещи JS, определенные в этих общих файлах, в свои приложения.

Какую стратегию я должен использовать, почему и как будет выглядеть конфигурация?

1 ответ

Решение

Я не вижу необходимости иметь grails-myorg-themes плагин, если единственная цель grails-myorg просто быть поставщиком ресурсов для приложения Grails.

Второй вариант выглядит как хорошее начало для выложенного сценария. Если ресурсы меняются и / или обновляются, версионности плагина будет достаточно.

Какие:

  • Вам не понадобится плагин ресурсов в плагине, приложение должно использовать плагин ресурсов. Если на всех ресурсах плагин используется в grails-myorg Затем он должен быть исключен из пакета с помощью export = false в конфиге сборки.
  • Создавайте специфичные для бизнеса модули ресурсов, которые можно легко использовать в приложении. Например:

Файл ресурсов плагина должен выглядеть примерно так: dashboard (скажем, корпоративный модуль, который отражает бренд) как модуль, который может быть required в приложении на определенных страницах / шаблонах.

//MyOrgResources.groovy
modules = {
    dashboard {
        resource url: 'js/dashboard/dashboard.js'
        resource url: 'css/dashboard/dashboard.css'
    }
}

И так далее и тому подобное для общих доменных ресурсов.

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

Другие вопросы по тегам