Bundler для javascript, или как управлять исходными текстами внешних файлов javascript - PullRequest
2 голосов
/ 07 декабря 2011

Я нахожусь в процессе преобразования существующего приложения Rails 3.1, которое я создал для клиента, в приложение Backbone.js с приложением Rails только в качестве расширения внутреннего сервера. Это только мой личный проект, чтобы узнать больше о Backbone.js.

При настройке Backbone.js (с использованием Backbone-on-Rails ) я заметил, что у меня есть некоторые зависимости (например, backbone-forms ), которые приходят из внешних источников и часто обновлено.

Я привык использовать Bundler для управления моими драгоценными камнями Ruby, но я не нашел ничего похожего для файлов JavaScript. Мне интересно, есть ли способ сделать то же самое для файлов Javascript (и, возможно, CSS).

В принципе, я вижу три варианта решения этой проблемы:

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

  • Использовать какой-то существующий инструмент типа "Bundler for Javascript", я искал что-то подобное, но пока ничего не нашел (хорошо).

  • Поскольку большинство этих файлов JS все равно будут поступать из Git, используйте Git для непосредственного получения файлов и время от времени используйте checkout для получения последней версии.

Я предпочитаю последний вариант, но надеялся получить еще больше информации от других людей, которые пошли по этому пути или предпочли другой способ решения этой проблемы (или это вообще проблема?).

Я полагаю, что способ Git кажется легким, но я пока не совсем уверен, как я мог бы сделать это хорошо с Rails 3.1 и Sprockets. Полагаю, я бы попытался извлечь отдельный файл с помощью Git и сделать так, чтобы он был клонирован в каталог, доступный для Sprockets, но я еще не пробовал.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Вы не упоминаете об этом в своих альтернативах, но в идеале вы должны использовать что-то вроде Maven для управления своими зависимостями.К сожалению, нет общедоступных репозиториев для файлов javascript.В этом обсуждении перечислены некоторые другие варианты, которые могут быть вам полезны: Доступность JQuery в репозиториях Maven

0 голосов
/ 08 декабря 2011

Сейчас я остановился на использовании решения Git в сочетании с магией guard-shell .

Шаги, за которыми я следую:

  • Создайте каталог dependencies где-нибудь на вашем локальном диске
  • Клонируйте репозитории с файлами javascript (или css), которые вы хотите использовать в приложении
  • Настройте пользовательскую команду guard-shell для выполнения следующих действий:
group 'dependencies' do
  guard 'shell' do
    dependencies = '~/path/to/dependencies/'

    watch(%r{backbone-forms/src/(backbone\-forms\.js)}) {|m| `cp #{dependencies + m[0]} vendor/assets/javascripts/#{m[1]}` }
  end
end
  • Поместите Guardfile в корень каталога приложения

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

Кажется, это прекрасно работает, вам нужно проделать определенную работу для каждого нового файла, который вы хотите включить в конвейер ресурсов, но все, что требуется, это клонировать репозиторий в вашем каталоге dependencies и добавить одну строку в Guardfile, например для backbone-form css:

watch(%r{backbone-forms/src/(backbone\-forms\.css)}) {|m| `cp #{dependencies + m[0]} vendor/assets/stylesheets/#{m[1]}` }

Кроме того, причина, по которой я добавил этот Guard в group, заключается в том, что я держу свои зависимости вне основного каталога приложения, что означает, что guard обычно не проверяет мой каталог зависимостей. Для этого я запускаю свои основные процессы Guard с помощью bundle exec guard -g main и использую bundle exec guard -w ~/path/to/dependencies -g dependencies в новом окне / вкладке терминала, чтобы указать -w(atchdir).

...