Прежде всего, я удивляюсь, почему он больше не работает, он работал в прошлом. Неужели Packagist недавно изменил свою логику и проверил composer.json в каждом теге, а до этого только в master?
Тем не менее два возможных решения этой проблемы, которые только что пришли мне в голову. Может быть, у кого-то еще есть другая идея.
Решение 1 - Исправление тегов
Здесь скрипт bash для добавления коммита с composer.json ко всем тегам.
#!/usr/bin/env bash
TAGS=`git tag -l`
# this is the commit hash from the point where you added composer.json. Its actually the correct one, I used your repo.
COMMIT="2b5c20eb2ad3ab624eb3eca5e86f06132cf9b216"
for TAG in $TAGS; do
# Checkout tag
git checkout $TAG
# Apply composer.lock commit
git cherry-pick $COMMIT
# Remove old tag
git tag -d $TAG
# Create new tag
git tag $TAG
# Remove tag on origin
git push origin :$TAG
# Add tag to origin
git push origin $TAG
done
Проблема с этим скриптом, он всегда меняет все теги. Так что теперь все будет в порядке, в следующий раз, когда вы объедините вышестоящий поток со своей веткой, этот скрипт необходимо изменить, чтобы обновлять только новые теги из вышестоящего потока.
Также становится грязно, если вам нужно изменить composer.json в какой-то момент, и у вас больше нет одного коммита.
Решение 2 - Объединение с компонентами
Для начальной загрузки мы используем компоненты / начальной загрузки. Компоненты имеют репозитории shim для некоторых js-библиотек и предоставляют пакеты для разных менеджеров пакетов.
Возможно, создаете проблему или спросите, могут ли они помочь вам с рабочим процессом, который они используют. Из того, что я вижу, их репозитории не являются клоном 1: 1, поскольку это действительно только конечный результат. В случае начальной загрузки он добавляет скомпилированные css-файлы и удаляет все файлы и конфиги, необходимые для его компиляции (например, babelrc, travis). Так что это кажется довольно обычным для каждой библиотеки. Вероятно, у них разные сценарии bash для каждой библиотеки, которые каждый день проверяют наличие новых выпусков и обновляют их репозиторий Shim.
См. https://github.com/components/components
И вы можете сравнить https://github.com/components/bootstrap с https://github.com/twbs/bootstrap
Может быть, с компонентами или без них вы могли бы написать собственный скрипт, который более или менее делает то же, что и они, - проверяет наличие новых тегов, если новый тег, тег проверки; скопируйте js-файл в наш репозиторий, добавьте туда composer.json; совершить; создать и вставить тег в репо.
Обход
Если кто-то ищет обходной путь до тех пор, пока это не будет исправлено, то здесь рабочий composer.json, который напрямую использует исходный репо:
{
"name": "xxx/yyy",
"description": "xxxx",
"type": "xxxx",
"license": "GPL-3.0+",
"require":{
"js-cookie/js-cookie": "^2.2.0"
},
"repositories": [
{
"type": "package",
"package": {
"name": "js-cookie/js-cookie",
"version": "2.2.0",
"source": {
"url": "https://github.com/js-cookie/js-cookie.git",
"type": "git",
"reference": "v2.2.0"
}
}
}
]
}
Самый большой недостаток в том, что вам нужно вручную проверить и изменить версию. Вот почему это не решение, а только обходной путь.