Плагин Maven для управления версиями и минимизации JavaScript - PullRequest
51 голосов
/ 19 октября 2010

Приложение Javascript для одной страницы

Я создал сложное одностраничное веб-приложение, управляемое ajax, которое использует серверный веб-сервис RESTful, обслуживающий JSON. Javascript разделен на множество разных файлов, каждый из которых представляет какую-то функцию или компонент.

Пока служба проходит тестирование alpha , я просто обслуживаю все эти файлы отдельно без минификации. Но теперь, когда я хотел бы запустить версию beta , мне действительно нужно объединить файлы, свернуть их и создать версию. Я хочу добавить это в свой процесс сборки, используя Maven.

Типы файлов Javascript

Я использую следующие «типы» файлов javascript, из которых # 3 и # 4 - мои проблемы:

  1. Внешние файлы, такие как jquery и jquery-ui, подаются из Google CDN. Редко меняйте эти версии, можно обрабатывать вручную.
  2. Плагины Jquery, которые я размещаю сам, такие как fullcalendar или ui-layout. Опять же, я редко обновляю их до новых версий и могу справиться с этим вручную.
  3. Код JavaScript для всего приложения. Пользовательский JavaScript, который распространяется по многим файлам и может время от времени меняться. Все эти файлы должны быть загружены для работы приложения.
  4. Функциональный код JavaScript. Пользовательский JavaScript, который загружается по требованию, когда запрашивается определенная функция. Этот код может изменяться довольно часто и не загружается при запуске.

Цели сборки

Я бы хотел сделать следующее в процессе сборки:

  • Объедините все файлы javascript типа 3 вместе, уменьшите их и сохраните как один файл с номером версии. Например: app-2.0.6.min.js, где 2.0.6 - версия проекта maven.
  • Все файлы типа 4 должны быть индивидуально сокращены и сохранены как отдельные файлы с номерами версий в названии. Например: feature-abc-56ab32de29.min.js, где 56ab32de29 - номер версии этого конкретного файла.
  • Обновите HTML-файлы тегами <script>, чтобы они указывали на файлы javascript с правильными номерами версий.
  • Обновите файлы Javscript, которые загружают файлы javascript типа 4, чтобы они указывали на правильные версии.

Вопросы

  • Есть ли плагин maven, который поможет с конкатенацией?

  • Есть ли плагин maven, который поможет с минификацией? В идеале я хотел бы использовать Google Closure Compiler, но, если проще, будет работать с другими.

  • Есть ли плагин maven, который поможет с версионированием?

  • Есть ли способ, чтобы файлы javascript типа 4 имели независимые номера версий? В идеале, если файл не изменяется между версиями 2.0.5 и 2.0.6, пользователям не нужно загружать новую версию, и их кэшированная версия будет работать нормально. Я использую GIT для управления исходным кодом, так есть ли способ использовать хэш-код файла GIT для управления версиями?

  • Есть ли решение, которое будет сжимать JavaScript, встроенный в обычные HTML-файлы, не убивая HTML?

  • Есть ли решение, которое будет сжимать и версировать мои CSS-файлы?

Ответы [ 3 ]

22 голосов
/ 19 октября 2010

Взгляните на yuicompressor-maven-plugin . Он может собирать различные js (а также css) файлы, а также минимизировать и запутывать их.

10 голосов
/ 11 января 2012

Вот новый плагин Maven, предназначенный для этой задачи: http://mojo.codehaus.org/webminifier-maven-plugin/

3 голосов
/ 19 января 2011

Я успешно включил оптимизацию RequireJS (использует компилятор Google Closure + выполняет конкатенацию) в среде Maven (для одностраничного приложения JS). Подробности см. В моем вопросе и последующем ответе: Компиляция RequireJS в проекте Maven с внешними зависимостями JS

Вероятно, вы могли бы расширить это до версии и архивировать минимизированные JS-артефакты.

...