2012-08-01 4 views
16

우리는 우리 자신의 Satis 저장소를 가지고 있으며, 거기에 우리 자신의 의존성을 저장할 수 있습니다. 이것은 잘 작동합니다.packagist.org의 종속성을 필자 자신의 Composer Satis 설치와 동기화하거나 미러링 할 수 있습니까?

개발자가 우리 자신의 저장소에없는 패키지를 사용하는 경우, 작성자는 packagist.org (fallback)를 통해 GitHub에서 가져옵니다.

그러나 우리는 packagist.org에 의존하고 싶지 않습니다. 모든 의존성은 우리 자신의 저장소에서 다운로드해야합니다.

우리가 알고 싶은 것은 Satis가 Packagist에서 패키지를 다운로드 할 수 있고, 아직 로컬에서 사용할 수없는 경우이를 저장하고 Satis 자신의 저장소에 자동으로 추가하는 것입니다.

이렇게하면 Satis 저장소에 종속성을 수동으로 추가 할 필요가 없습니다.

+0

패키지 관리자는 패키지 메타 데이터 만 저장합니다. 실제 소스 코드는 저장소 (일반적으로 gitHub)에서 가져옵니다. 필자는 작곡가 소스 코드를 검색하여 패키지를 나열하고 메타 데이터를 다운로드하는 방법을 찾을 수 있다고 생각합니다. – Tivie

답변

15

Satis가 이제 이것을 지원합니다.

Satis setup instructions을 따르고 구성 파일 (기본적으로 satis.json)에 다음을 추가하십시오. prefix-url을 업데이트하고 적절하게 요구하십시오.

{ 
    "repositories": [ 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require-dependencies": true, 
    "require": { 
     {{your application dependencies from composer.json}} 
    }, 
    "archive": { 
     "directory": "dist", 
     "prefix-url": "{{your server}}", 
     "skip-dev": true 
    } 
} 

그런 다음 정상처럼 Satis 저장소를 만들 수 있습니다

php bin/satis build <configuration file> <build dir> 

을 지금, 당신의 Satis 저장소는 응용 프로그램의 종속성을 모두 만족시킬 것이다.


참고 : 처음 실행하는 데 약간의 시간이 걸릴 수 있습니다. 후속 실행은 훨씬 빠릅니다. 또한 Satis는 캐시에/tmp를 사용합니다./tmp가 tmpfs에 의해지지되는 작은 메모리 시스템에서, 큰 의존성 트리를 가지고 있다면/tmp 공간을 늘릴 필요가 있습니다.

또한 프로젝트의 composer.json 파일에 disable the Packagist repository을 추가하여 Satis 저장소의 모든 종속성을 적용 할 수 있습니다. 이 작업을 수행하려면 추가

{ 
    "repositories": [ 
     { 
      "packagist": false 
     } 
    ] 
} 

을 프로젝트의 composer.json에.

+0

귀하의 의견을 보내 주셔서 감사합니다! 이 구성으로 인해 Satis의 인스턴스가 모든 종속성을 보관할 때 (예 :'php bin/satis build') Packagist에 종속적이지 않을까요? 그래서 Packagist.org가'php bin/satis build '를 실행할 때 다운되면, 각 의존성이 어디에 있는지 알 수 없을 것입니다. 물론 이것은 저장소에있는 모든 표준 저장소 URL의 목록을 수동으로 관리한다는 것을 의미하지만 이는 독립성을 위해 지불하는 가격입니다. 또는 나는 무엇인가 놓치고 있냐? –

+0

맞습니다.하지만 Packagist가 다운 된 경우, 당신은 여전히 ​​마지막 Satis 실행 중에 뽑아 낸 모든 의존성을 가지고 있기 때문에 큰 문제는 아닙니다.실제로, 필자는 종속성을 적극적으로 변경하고 정상적인 개발 및 생산 중에 완전히 만족 된 종속성 미러를 사용할 때 외부 문제 (예 : Packagist를 사용할 수 없음)를 접하게 될 것이라고 생각합니다. – rynemccall

+0

여전히 모든 종속성을 수동으로 추가해야하는 문제가 있습니다. git repo가 ​​있다면 그냥 추가 할 수는 있지만 해당 repo에서 프로젝트가 필요로하는 의존성은 자동으로로드되지 않습니다. 이는 큰 수작업입니다. – Lars

6

지금은 broker을 사용하면됩니다. 대부분이 기능이 자동으로 추가 될 가능성이 높습니다.

+0

고마워.이게 내가 필요한거야. – Niborb

+2

"참고 :이 프로젝트는 더 이상 적극적으로 유지 관리되지 않습니다. 이제 [만족] (https://github.com/composer/satis)에서 유사한 기능을 지원하므로 [satis] (https://github.com/)를 사용해야합니다. 작곡가/만족). " – MPV