goga
Менеджер однофайловых модулей. Использует Ваш git и gists для хранения пакетов.
Зачем?
- У вас есть участки кода которые вы копируете из проекта в проект, слегка модифицируя по ходу
- Вы не считаете нужным оформлять их в типичные пакеты, так как это занимает время и усложняет изменение модуля под конретное приложение.
- Вы хотите контроллировать историю изменения модуля.
- Вы хотите делиться кодом с другими.
В таких случаях проще использовать goga. Он одной командой добавляет модуль в ваш проект, контроллирует и публикует его изменения. Таким модулем легко делиться и поддерживать.
Преимущества
- Версионированная альтернатива
copy-paste
- Небольшие готовые решения можно подключать в проект целиком
- Легко вность изменения
- Легко публиковать
- Мультиплатформенное решение. Написано на
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/
- Используйте добавленный код привычным для вас способом.
Вы можете подключать и перемещать файл по проекту как вам удобно, используя проектную систему контроля версий.
Публикация изменений
После того как вы внесли в модуль, находящийся в вашем проекте, изменения, оттестировали их и хотите ими поделиться или сохранить для будущего использования, опубликуйте его следующей командой.
goga push ./app/javascripts/spinner.js
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