Отдельное приложение 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?