Подтвердить что ты не робот

Плагин Maven для управления версиями и минимизации javascript

Отдельное приложение Javascript

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

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

Типы файлов Javascript

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

  • Внешние файлы, такие как jquery и jquery-ui, хранятся в CDN Google. Редко изменяйте эти версии, их можно обрабатывать вручную.
  • Плагины JQuery, в которых я размещаю себя, например fullcalendar или ui-layout. Опять же, я редко обновляю их до новых версий и могу обрабатывать их вручную.
  • Общий код JavaScript. Пользовательский javascript, который распространяется по многим файлам и может иногда меняться. Все эти файлы должны быть загружены для работы приложения.
  • Специальный 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, загружающие файлы типа 4, содержат файлы javascript, чтобы указать на правильные версии.

Вопросы

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 3

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

Вероятно, вы можете расширить его до версии и архивировать миниатюрные артефакты JS.