2013-07-08 3 views
3

저는 직장에서 프로젝트를 위해 Behat과 Composer와 협력 중입니다. Mink와 Mink Selenium 2 드라이버에 대한 포크와 패치를 만들어 팝업 창을 처리해야했습니다. 현재 패치는 내가 갈퀴를 관리하는 사람들에 의해 검토되고 있습니다. 그래서 나는 포크 버전을 대신 사용하고 싶습니다.패키지 포크를 사용하기 위해 PHP Composer에서 패키지 설치를 차단하십시오.

나는 내 저장소를 작곡가에 추가했으며 가져오고 있습니다. 그러나 "behat/mink-extension"에 필요하기 때문에 "behat/mink"패키지가 여전히 설치 중입니다. 것은 그것도 내 포크를 사용할 수 있습니다. 그래서 나는 그것이 단지 "behat/mink"패키지가 아니라 내 것을 끌어 들이고 싶습니다.

이 작업을 수행 할 수 있습니까? 포크를 위해 패키지의 필수 패키지를 차단할 수 있습니까?

감사합니다.

답변

8

예, 포크를 저장소로 사용하고 작성자가 원래 패키지보다 우선적으로 포크를 포함하면됩니다. 당신이 당신의 프로젝트에 대한 특정 라이브러리를 사용하고 라이브러리에서 변경 뭔가 결정하면 From the documentation

, 당신은 당신의 프로젝트가 패치 버전을 사용하는 것이 좋습니다. 라이브러리가 GitHub에있는 경우 (이 경우 대부분 시간), 해당 위치에 포크하여 변경 사항을 포크로 푸시하면됩니다. 그런 다음 프로젝트의 composer.json을 업데이트합니다. 할 일은 포크를 저장소로 추가하고 버전을 사용자 지정 분기를 가리 키도록 업데이트하는 것입니다.

누군가가 Monolog에 패치를 적용한 예입니다. 그런 다음 Composer에게 저장소를 사용하도록 지시합니다.

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "https://github.com/igorw/monolog" 
     } 
    ], 
    "require": { 
     "monolog/monolog": "dev-bugfix" 
    } 
} 

Composer는 https://github.com/igorw/monolog에서 사용할 수있는 모든 버전을 검사하고 Packagist 볼 수 독백의 버전에 우선을 사용합니다.

또한 Composer에서 HTTP 주소가 아닌 로컬 디렉토리를 사용하도록 지정할 수 있습니다.

"repositories": [ 
     { 
      "type": "vcs", 
      "url": "/documents/project/igorw/monolog" 
     } 
    ], 

이 당신이 라이브러리를 개발하는 다른 프로젝트에서 사용하고 각 편집 및 테스트 사이에 Github에서에 강제 할 필요없이 테스트 할 수 있습니다.

+0

처음이 설명서를 읽었을 때 다음과 같은 문제가 발생했습니다. 그러나이 기사를 읽은 후에 : http://en.mnapoli.fr/overriding-dependencies-with-composer/ 나는 마침내 그것을 이해했습니다. – pthurmond

1

정말 차단할 수 없습니다. packagist.org에서 정보 가져 오기를 비활성화 할 수 있지만 모든 패키지에 영향을 미칩니다.

당신이해야 할 일은 behat/mink에 대한 별칭을 추가하는 것입니다. the documentation of composer aliases을 참조하십시오.

분기 별칭을 사용하지 않으려면 인라인 별칭을 사용하십시오.