goga
Менеджер однофайловых модулей (версионированная альтернатива copy-paste)
Зачем?
Бывают небольшие участки кода, которые, слегка модифицируясь копируются из проекта в проект. Ради них не рационально заводить и регистрировать в пакетных менеджерах отдельный пакет. Во-первых это занимает время на создание и поддержку, во-вторых придется отдельно вносить изменения в такие пакеты и выкачивать их обратной в основной проект. При этом хочется видеть историю изменений, централизованно хранить и делиться.
Для таких случаев подходит goga.
Что даёт?
- Подключение пакетов одной командой.
- Использует Ваш git и gists для хранения пакетов.
- Живет в системе контроля версий вашего приложения.
- Не зависит от языка программированя.
- Легко вность изменения.
- Легко публиковать.
- Мультиплатформенное решение. Написано на
golang
Установка
go get github.com/dapi/goga
Использование
Добавление модуля в проект
-
Возьмите ссылку на файл, который вы хотите добавить в проект. Это может быть прямая ссылка на github, например - https://github.com/dapi/elements/blob/master/spinner.js
-
Добавьте модуль в проект
goga add https://github.com/dapi/elements/blob/master/spinner.js ./app/javascripts/
- Используйте добавленный код
./spinner.js привычным для вас способом.
Вы можете подключать и перемещать файл по проекту как вам удобно, используя проектную систему контроля версий.
Публикация изменений
После того как вы внесли в модуль, находящийся в вашем проекте, изменения, оттестировали их и хотите ими поделиться или сохранить для будущего использования, опубликуйте его следующей командой.
goga push ./app/javascripts/spinner.js
goga заглянет в исходник, найдет там ссылку на источник находящуюся в комментраии с префиксом goga и зальет туда изменения.
Как устроены goga-модули
goga-модуль это обычный исходник на любом языке программирования, в который, добавлен goga-комментарий с адресом источника.
Например:
// goga https://github.com/dapi/elements/blob/master/spinner.js
customElements.define('dapi-spinner', class extends HTMLElement {} )
Вам не нужно добавлять это комментарий самостоятельно. goga сам добавит его при подключении модуля.
Поддерживаемые источники модулей
Языковая поддержка
В goga легко добавить поддержку модулей на любом языке программирования. Но на данный момент поддерживает только следующие.
| Язык |
Вид goga-комментария |
| JavaScript |
// goga URI |
| Ruby |
# goga URI |
Если Вам нужна поддержка других языкой - создавайте issue или присылайте PR