2012-09-03 2 views
9

아마도 Packagist를 통해 작곡가를 사용하여 배포 할 계획 인 패키지 - myvendor/mylib을 개발 중입니다. 이 패키지에는 다른 것들 중에서도 패키지를 가져 오는 프로젝트 (예 : myvendor/mymain)에 사용하고자하는 명령 행 PHP 스크립트 bin/console.php이 포함되어 있습니다.종속성의 스크립트가 Composer 오토로더의 경로가 필요합니다.

나는 쓰레기통의 배열과 composer.jsonconfig 설정을 가져올 mylib 패키지에 지정할 수 있음을 알고 :

{ 
    "name": "myvendor/mylib", 
    "config" : { 
     "bin" : ["bin/console.php"] 
    } 
} 

mymain 프로젝트는 작곡가/업데이트를 설치 않는 경우,이 mylib/bin/console.php입니다 또한 mymain/bin/console.php로 심볼릭 링크, 나는 mymain 프로젝트를 지정할 수 있음을 알고있다 - 자신에 composer.json-그가 의존성 쓰레기통이 심볼릭 링크되고 싶어 여기서

,536,
{ 
    "name": "myvendor/mymain", 
    "config": { 
     "bin-dir": "scripts" 
    } 
} 

이 경우 콘솔 스크립트는 scripts/console.php으로 심볼릭 링크됩니다.

이것은 잘 작동합니다. ;-)

그러나 스크립트 bin/console.php에는 작곡가 생성 vendor/autoloader.php이 포함되어야합니다. 고립 된 mylib을 개발할 때 bin/console.php 스크립트는 vendor/autoloader.php을 기준으로 자신의 위치를 ​​알고 있기 때문에 쉽게 포함 할 수 있습니다. 그러나 일단 다른 프로젝트 (예 : myvendor/mymain)에 종속성으로 가져 오면이 경우에는 mymain/vendor/autoloader.php 스크립트 만 있습니다. 원칙적으로 콘솔 스크립트는 autoloader 스크립트와 관련하여 그가 어디에 있는지 알 수 없습니다.

Composer는 콘솔 스크립트에서 액세스 할 수있는 환경 변수를 제공하여 스크립트에서 올바른 vendor/autoloader.php 스크립트를 찾을 수있게합니까?

은 BTW : 나는 Composer CLI environment variable 알고있다, 그래서 내가 그것을 수입 프로젝트 요구 사항을 만들 수있는 상상 - mymain가 - 정의 VAR COMPOSER_VENDOR_DIR (수출!). 그런 다음 내 콘솔 스크립트가이를 사용하여 프로젝트의 오토로더를 찾을 수 있습니다.

  1. 우리는 설정은에 프로젝트를 적용하기를 원하지만 쉘 VAR (및 수출)은 그 쉘 세션에서 액세스 모든 프로젝트에 적용됩니다 :하지만 그 점에서 잠재적으로 문제가 보인다. 내 작은 의존성 - myvendor/mylib - 가져 오기 프로젝트에 부과하는 것으로 보인다.

  2. 원칙적으로 종속성 자체 (myvendor/mylib)는 필요한 것을 찾을 수 있어야합니다. 수입업자에게 부담을주지 않는 것 같습니다.

WDYT? 미리 감사드립니다. 아이디어 환영합니다.

답변

3
(내가 부연하고 있고있는 나는 다소 확대하고 IRC의 Freenode의의 #composer에 @igorw과의 토론에서 나온) 한 가지 방법은 빈 스크립트 console.php이 찾고, __DIR__부터 시작하여 파일 시스템을 반복 할 수 있도록하는 것입니다

autoload.php의 존재.

+2

정말 반복 할 필요가 없습니다. / – Seldaek

+0

과 일치하므로 2 개의 dirs를 볼 수 있습니다. @Seldaek : 맞아, 마침내 [jsonlint] (https : // github.com/Seldaek/jsonlint/blob/master/bin/jsonlint) 그런 식으로 구현했습니다. 고마워요! –

+0

사람들이 여전히이 문제 (me!)가있는 것 같습니다. 답변을 찾을 수있는 곳 : http://stackoverflow.com/questions/35271282/how-can-i-provide-a-script-for-php-cli-via -composer-as-standalone-and-depen – VladFr

관련 문제