2015-03-25 7 views
2

Я успешно настроил Satis на своем собственном сервере и могу извлечь из него пакеты.Как сделать установки зависимостей Satis от packagist

Однако зависимости, которые требуются в этих частных пакетах, постоянно клонируются в их версии с кратковременным выпуском вместо указанного ограничения версии. Я думаю, что Satis создает локальное зеркало последней версии dev. Однако я не хочу иметь локальное зеркало, мне просто нужно их установить непосредственно из Packagist.

Так как мне нужно настроить проект/пакет/Satis на наличие зависимостей в этих частных пакетах, установленных из Packagist?

Спасибо.


Это мой Satis построить файл:

{ 
    "name": "Package Server", 
    "homepage": "http://packages.URL", 
    "repositories": [ 
    { 
     "type": "vcs", 
     "url": "[email protected]:USERNAME/REPO.git", 
     "options": { 
      "ssh2": { 
       "username": "USERNAME", 
       "pubkey_file": "PUBFILE", 
       "privkey_file": "PRIVATEFILE" 
      } 
     } 
    } 
    ], 
    "require-all": true 
} 

И это composer.json файл проекта, требующий частный пакет (пакет не имеет маркированных релизов):

{ 
    "name": "Test Project", 
    "description": "", 
    "require": { 
     "php": ">=5.4.0", 
     "USERNAME/REPO": "*" 
    }, 
    "repositories": [ 
     { 
      "type": "composer", 
      "url": "http://packages.URL" 
     } 
    ], 
    "minimum-stability": "dev" 
} 

И это композитор частного пакета.

{ 
    "name": "USERNAME/RPO", 
    "description": "", 
    "require": { 
     "php": ">=5.4.0", 
     "illuminate/support": "5.0.*", 
     "vinkla/hashids": "~1.0" 
    }, 

    "minimum-stability": "dev" 
} 

ответ

3

В вашей конфигурации Satis вы определили "require-all": true. Это значение по умолчанию и выбирает все версии всех пакетов в указанном вами репозитории.

Вы можете попытаться снять "require-all": true в пользу раздела require. Это означает, что Satis будет содержать только эти конкретные пакеты и их версии, например, так:

"require": { 
    "company/packageA": "*", 
    "company/packageB": "1.2.3", 
    "company/packageC": "2.0.0" 
} 

Это пакет вишня сбор на Satis


Так что, если я правильно понимаю, что нужно добавить частные пакеты, которые доступны в указанном частном репозитории в ключе требования и их собственные зависимости, будут установлены из Packagist?

Добавить require-dependencies - это означает, что Satis отображает не только пакеты, указанные в разделе «require», но и все их зависимости.

См https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#resolving-dependencies

Можно ли иметь несколько пакетов в одном проживали определенном хранилище или же каждый пакет нужен свой собственный вход в хранилище URL-адрес в Satis?

Я думаю, что не возможно иметь несколько пакетов в одном "type": "vcs" репозитории.

С "type": "composer" и клонированным пакетом вы можете хранить несколько репозиториев. Подумайте о http://drupal-composer.org с http://packagist.drupal-composer.org/.

{ 
    "repositories": [ 
     { "type": "vcs", "url": "https://github.com/somewhere/packageA" }, 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require": { 
     "package/packageA": "somewhere-dev", 
     "phpunit/phpunit": "*" 
    }, 
    "require-dependencies": true 
} 
+0

Так что, если я правильно понимаю, мне нужно добавить приватные пакеты, которые доступны в указанном приватном репозитории в ключе require, а их собственные зависимости затем будут установлены из Packagist? – Propaganistas

+0

Вопрос: возможно ли, чтобы несколько пакетов находились в одном определенном репозитории или каждый отдельный пакет нуждался в собственной записи URL-адреса репозитория в Satis? – Propaganistas

+0

Я обновил свой ответ, чтобы ответить на ваши вопросы. –