2013-06-18 1 views
6

필자는 로컬 디렉토리에서 종속성을 찾도록 지시 한 작곡가 기능을 사용하기 시작 했으므로 라이브러리와 그 라이브러리를 병렬로 사용하는 무언가를 개발할 수 있으므로 항상 업데이트하려면 git으로 푸시하지 않아도됩니다. 그것은 굉장합니다. 예 : 당신은 작곡가 업데이트를 수행 할 때composer.json의 대안을 사용하는 작성자 옵션은 무엇입니까?

"repositories": [ 
    { 
     "type": "vcs", 
     "url": "/documents/projects/github/guzzle" 
    } 
], 

"require":{ 
    "guzzle/guzzle": "3.7.*@dev" 
} 

그래서, 작곡가는 로컬 디렉토리에서 목구멍 버전에서 가져옵니다, 그래서 당신은에 밀어하지 않고도 해당 라이브러리를 사용하는 다른 응용 프로그램에서 라이브러리의 코드를 테스트 할 수 있습니다 각 코드 변경 사이의 저장소.

그러나 나는 그 세트로 내 프로젝트를 위해 composer.json을 거의 체크인했는데, 분명히 아무도 elses 머신에서 작동하지 않을 것입니다.

composer.json과 다른 파일을 사용하도록 작곡가에 알리는 방법이 있습니다. 다른 방법을 사용하면 composer.json의 부러진 버전을 우연히 커밋하지 않고도 안전하게 작곡가에게 로컬 디렉토리를 사용하도록 알릴 수 있습니다. 저장소?

답변

2

로컬 저장소에서 가져 오는 대신 --prefer-source 옵션을 composer install/update 명령에 추가하고 로컬 저장소 참조를 제거 할 수 있습니다.

작곡가는 git를 벤더 디렉토리에 복제하고, 소프트웨어를 개발하고 벤더 소프트웨어를 개발할 수 있습니다. 왜냐하면 그것도 완벽하게 작동하는 git repo이기 때문입니다.

로컬 저장소 참조를 추가하는 것은 실제로 권장되지 않습니다. 그것은 실제 로컬 소프트웨어에 대해 사용할 때 작동하지만 오버 헤드가 있습니다 : 간접적 인 종속성 일지라도 (예 : 소프트웨어를 추가하는 경우) 해당 소프트웨어를로드하는 모든 composer.json 파일에서이 저장소를 언급해야합니다. 이 소프트웨어는 로컬 저장소에 종속되어 있어야합니다.)

리포지토리의 URL을 하드 코딩하면 자유롭게 변경할 수 없습니다. repo를 이동하고 그에 따라 URL을 변경할 수는 있지만 소프트웨어의 이전 버전은 모두 composer.json 및 composer.lock 파일에 이전 URL을 가지고 있으며 거기에서로드하려고 시도합니다.

0

Composer에서이 작업을 멋지게 처리 할 방법이없는 것 같지만, 해킹이 가능합니다.

composer.json 파일에서 일부 데이터를 해킹하려는 위치에 설명을 입력하십시오.

"LOCALHACK", 

"repositories": [ 
    { 
     "type": "vcs", 
     "url": "/documents/projects/github/intahwebz-core" 
    } 
], 

새로운 composer.json를 생성하는 composerLocal.php라는 작은 PHP 스크립트를 추가

{ 
"name": "base-reality/intahwebz", 

"//": "LOCALHACK", 

"require":{ 
    "base-reality/php-to-javascript": ">=0.1.17", 
    "guzzle/danackguzzle": "3.3.*@dev", 
    ... 
    ... 
    } 
    ... 
} 

는 다음 로컬 디렉토리에 대한 참조를 포함 (힘내하기 위해 최선을 다하고되지 않음) 별도의 파일 composer.local이

<?php 

$srcFile = file_get_contents("composer.json"); 
$hackFile = file_get_contents("composer.local"); 
$finalString = str_replace('"LOCALHACK",', $hackFile, $srcFile); 
file_put_contents("composer.json", $finalString); 

?> 

그리고 실제 composer.json 파일 백업 localupdate.sh라는 작은 bash는 스크립트, 해킹 composer.json 실행 작곡가를 생성 한 후 복원 파일 localupdate.sh 스크립트를 실행 원래 composer.json 파일

cp -f composer.json composer.json.bak 
php composerLocal.php 
composer update 
cp -f composer.json.bak composer.json 

프로젝트에 의해 사용되는 실제 composer.json 파일을 수정의 위험없이 로컬 커밋을 테스트 할 수 있습니다, 그래서 실수의 적은 기회가있다 잘못된 composer.json을 저장소로 푸시합니다.

작곡가는 리포지토리 디렉토리에서 파일을 읽지 않습니다. Git에서 커밋 된 파일을 읽으므로 라이브러리 코드의 변경 사항을 커밋해야합니다. 위의 프로세스는 푸시 단계를 건너 뜁니다.

-1

쉽게 아티팩트를 사용하십시오. 저장소에서

이 추가 :

{ 
    "type": "artifact", 
    "url": "path/to/artifact/files/" 
}, 

지금 당신은 그냥 디렉토리를 작성해야하고 그 디렉토리에 저장소의 사본을 우편. 그래서 같은

이름 압축 파일 :

[vendorname]-[packagename]-[version].zip 

예 :

querypath-QueryPath-3.0.0.zip 

지금 로컬 패키지를 수정하고이 zip 파일 대신 온라인의 repo에서 가져옵니다.

"querypath/QueryPath": "3.0.0", 

당신은 공급 업체 파일을 편집 할 수있는 기능이있을 것이다 작곡가는 여전히 어떤 자동 로더에게 변화에 상대적으로 업데이트되며,이 방법 : 우편에 정의 된

에서은과 같이 추가하고 버전을 지정 필요 그것은 당신의 변화를 혼자 남겨 둘 것입니다.

+0

나는 composer.json 파일을 편집하는 방법을 알고 있습니다. 질문은 "composer.json을 편집하지 않고도 composer.json과 다른 파일을 사용하도록 작곡가에 지시합니다."라는 질문이있었습니다. – Danack

+0

죄송 합니다만, 질문의 요점을 이해하지 못했습니다. 도서관을 편집하고 작곡가가 그들을 떠나길 원한다고 생각했습니다. –

관련 문제