Автоматическая замена URL-адресов библиотеки JavaScript при развертывании.

Я создаю чисто клиентское веб-приложение на основе JavaScript и пытаюсь оптимизировать рабочий процесс для переключения на URL-адреса CDN для библиотек JavaScript, которые я использую на рабочем сервере.

Чтобы иметь возможность работать в автономном режиме, мой ноутбук для разработки загружает все библиотеки из папки /js на локальном веб-сервере. Когда я развертываю приложение, я хочу заменить эти URL-адреса для использования CDN-версий библиотеки jQuery в Google, например. Поскольку нет логики на стороне сервера, я не могу проверить там что-то вроде Rails.env.production? как если бы это было приложение Rails.

Я развертываю, отправляя репозиторий git на рабочую машину и запуская перехватчик после получения. Я полагаю, что мог бы запустить какую-то подпрограмму sed, которая переключает URL-адреса для обновления в том же сценарии после получения, но мне любопытно, нет ли более элегантного решения.

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

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


person Joost Schuur    schedule 24.04.2011    source источник
comment
Вы пробовали использовать инструменты сборки, такие как ANT, для развертывания из локальной среды в рабочую среду?   -  person Marc Bouvier    schedule 25.04.2011
comment
Я не был знаком с ANT, пока вы только что не упомянули об этом, и, глядя на их документы, он кажется громоздким инструментом, который в конечном итоге просто приведет к тому, что я вызову sed-скрипт, что я мог бы также сделать в крюке post-receive git .   -  person Joost Schuur    schedule 25.04.2011


Ответы (2)


Вы хотите зафиксировать изменение, которое имеет указатель на версию CDN в ветке, из которой вы будете публиковать.

Внесите изменение, которое будет иметь версию разработки, в свою ветку разработки.

Предполагая, что это единственное, чем отличаются ваши ветки, объединитесь с «нашей» стратегией в обеих ветках.

git merge -s ours mainbranch

Это гарантирует, что вы не получите это изменение кода с этого момента, где бы вы ни выполняли слияние или перебазирование.

надеюсь это поможет.

person Adam Dymitruk    schedule 25.04.2011
comment
Это отличное решение с минимальными усилиями, adymitruk. Очень хорошо! - person Joost Schuur; 27.04.2011

Вы можете просто заставить CDN-хост работать локально, добавив его в свой /etc/hosts.

Если это невозможно, используйте встроенный JavaScript, чтобы добавить теги <script src="..." в документ и поместить некоторую логику, чтобы решить, использовать ли CDN или нет в этом скрипте.

person ThiefMaster    schedule 24.04.2011
comment
Изменение файла hosts предполагает, что я буду кэшировать любой файл, обслуживаемый с хоста, что является большим предположением. Последнее будет работать, но на самом деле ограничивает область загрузки сценария. Я ищу что-то более общее, что позволит мне изменять контент после нажатия на рабочую среду. - person Joost Schuur; 25.04.2011