Моя цель — иметь composer.json
файл, добавленный в наш репозиторий проекта, в котором указывается, какие темы или плагины должны использоваться для этого проекта, и когда разработчик закрывает репозиторий, все, что ему нужно сделать, это запустить установку composer. Мы хотим, чтобы плагины не попали в репозиторий проекта, чтобы остановить вздутие репозитория проекта, и оно становится медленным, чтобы тянуть и толкать.
Для стандартных плагинов WordPress, таких как «Jetpack by WordPress.com», это хорошо, так как мы будем использовать https://wpackagist.org/. Тем не менее, для Premium, оплачиваемого за плагины и нестандартные в доме, которые не могут быть открыты, мы хотим разместить их в репозитории Private Composer.
Поскольку у нас будет несколько версий этих плагинов, я хотел бы, чтобы все версии отображались, такие как 1.1, 1.2, 1.3, чтобы разработчик мог указать в composer.json, какая версия требуется, например, если будущая версия что-то сломает и нам нужно откатиться к предыдущей версии.
Я ознакомился с основами настройки частного репозитория Satis, что я и сделал, но не могу заставить его циклически просматривать теги git версий, а также указать, что это плагин WordPress, и установить его в правильном месте.
Это была моя первая попытка получить все версии с тегами git:
{
"name": "Private Repository",
"homepage": "http://packages.privaterepo.com",
"repositories": [
{
"type": "vcs",
"url": "[email protected]:companyname/project.git"}
],
"require-all": true
}
И здесь я должен указать версию, но установить ее в правильном расположении плагина WordPress:
{
"name": "Private Repository",
"homepage": "http://packages.privaterepo.com",
"repositories": [
{
"type": "package",
"package": {
"name": "company/project",
"description": "WordPress Plugin",
"version": "1.0",
"source": {
"type": "git",
"url": "[email protected]:company/project.git",
"reference": "origin/master"},
"type": "wordpress-plugin",
"require": {
"php": ">=5.3.2",
"composer/installers": "*"}
}
}
],
"require-all": true,
"require-dependencies": true,
"extra": {
"installer-paths": {
"wp-content/plugins/{$name}/": ["type:wordpress-plugin"]
}
}
}
Кто-нибудь может посоветовать, как заставить оба этих сценария работать вместе?
Я думаю, что у меня похожая настройка: в локальном репозитории Satis у нас есть как внутренние пакеты с частного сервера Git, так и все внешние пакеты от Github.
Хитрость заключается в том, чтобы сделать два шага: Шаг первый извлекает только метаданные всех внешних пакетов, и именно здесь вступает в действие ваш диапазон версий, чтобы избежать вытягивания ВСЕГО.
Второй шаг будет сканировать все локальные репозитории Git и обнаруживать все версии, а также добавит репозиторий Composer, созданный на шаге 1.
Фактически вы будете иметь дело с двумя конфигурациями Satis, которые создадут два результата, и результат первого задания для внешних пакетов будет извлекать только все метаданные, а на втором шаге он импортируется и используется точно так же, как локальное Git-репо, и настраивает его. На втором этапе поиска «всех» версий и, возможно, создания из них ZIP-файлов будет создана хорошая локальная резервная копия каждого пакета, который может вам понадобиться.
Или другими словами:
удовлетворяться-external.json
{
"repositories": [
{
"type":"composer",
"url":"https://packagist.org"}
],
"require": {
"any/package":">=2.0"}
"output-html": false,
"require-dependencies": true
}
Запустить его:
php -dmemory_limit=2G satis/bin/satis build satis-external.json external/
удовлетворяться-internal.json
{
"repositories": [
{
"type": "composer",
"url": "http://url/from/external/above"},
{
"type": "vcs",
"url": "ssh://internal/gitrepo.git"}
],
"require-all": true,
"archive": {
"directory": "dist",
"format": "zip",
"prefix-url": "https://whatever/youneed",
"skip-dev": true
}
}
Запустить это
php -dmemory_limit=2G satis/bin/satis build satis-internal.json internal/
Добавление репозитория «type = composer» в Satis приведет к тому, что он будет действовать как любой другой репозиторий — особенно он будет загружать ВСЕ упомянутые там пакеты, если вы «require-all = true», поэтому будьте осторожны, чтобы не добавлять Packagist или любое другое репозиторий напрямую.
Также обратите внимание, что «require-dependencies» имеет значение true для внешних пакетов, потому что вы, вероятно, не захотите проходить через сложность добавления каждой зависимости пакетов, которые вы хотите использовать.
Если некоторые из ваших платных пакетов предлагают доступ к удаленному репо, вы можете добавить это репо во внешнюю конфигурацию вместе с учетными данными доступа — оно должно работать.
Других решений пока нет …