2016-11-16 3 views
2

이전에 물어 본 적이 있지만 잠시 동안 검색 한 후에 미안합니다. 내 딜레마에 대한 답변을 찾을 수 없었습니다.작곡가 오토로더, github 및 배포

저는 PHP 프로젝트에서 작업하는 팀의 일원이며 버전 관리에는 github을 사용합니다. 우리는 PSR-4 오토로더를 구현하고 모든 단일 가이드가 작곡가를 사용하기를 바랍니다. 이제는 검색하는 동안 공급 업체 폴더가 github에 포함되어서는 안되고 composer.json에만 포함되어야하며 모든 개발자는 자신의 컴퓨터에 작곡가를 설치해야한다는 것을 알았습니다.

모든 개발자 컴퓨터에서 오토로더를 다시 만들어야하는 경우.

마지막으로 프로젝트가 끝나면 웹 사이트에 업로드하고 싶지만 FTP를 통해서만 할 수 있습니다.

라이브 웹 사이트에 어떤 파일을 업로드해야하며 오토로더는 어떻게됩니까?

답변

1

composer.lock 파일도 커밋해야합니다. 그것은 매우 중요합니다. 즉, 다른 사람이 코드를 체크 아웃 할 때마다/vendor 디렉토리에 설치된 동일한 종속성 세트 (정확한 버전 포함)를 얻는다는 뜻입니다.

그렇기 때문에/vendor 디렉토리를 커밋 할 필요가 없습니다. 잠금 파일은 종속성이 고정되어 있는지 확인합니다.

composer.json은 요구 사항을 충족하는 수많은 잠재적 종속성 버전을 정의합니다. composer update을 실행하면 근본적으로 이러한 요구 사항을 충족하는 최신 버전이 있는지 확인합니다. 그것이 설치와 업데이트의 차이입니다. 설치가 잠금 파일을 벗어나서 무엇을 검색해야하는지 정확하게 알고 있습니다. 업데이트는 json 파일에서 분리되어 다른 시점에서 다른 결과를 반환 할 수 있습니다.

composer.json에서 루트 네임 스페이스가있는 곳을 알려 자동 로더를 정의 할 수 있습니다.

"autoload": { 
    "psr-4": { 
     "RootNamespace\\": "library/src" 
    } 
}, 

동료가 composer install 실행 한 때 일관된 경로에 그들을 위해 오토로더를 생성합니다.

당신은 composer.lock 파일을 업로드하고 작곡가 생산에 설치 실행하거나 시간 앞서 그것을하고 빌드의 일부로 공급 업체 디렉토리를 업로드 할 수 있습니다 :

당신은 배포 옵션이 있습니다.

전에 이전에 프로덕션 서버에서 파일이 변경되면 문제에 대해 알고 싶습니다. 대안은 누락 된 종속성으로 인해 프로덕션 환경에서 잘못된 업그레이드를 남길 수 있습니다. 종속성을 먼저 설치하고 한 번에 모든 것을 전송하는 것이 안전합니다.

제쳐두고, 나는 git commit 후에 이름 붙여진 프로덕션의 별도 폴더에 새 릴리스를 설치 한 다음 배포 단계의 일부로 심볼릭 링크하려고합니다. 이렇게하면 파일의 나머지가 업로드되기를 기다리는 동안 반 갱신 된 응용 프로그램이 없어집니다. 이 방법을 사용하면 이전에 언급 한 문제가 없어 지므로 작곡가가 제작에서 설치할 수 있습니다.

+1

'composer.lock'에 대한 추가 참고 사항. 그것은 당신이 똑같은 의존성을 갖게하는 것뿐만 아니라 똑같은 버전을 (단지 지적할만한 가치가 있다고 생각한 것) 확신 할 수 있습니다.또한 파일을 프로덕션 서버에 업로드하기 전에 'composer install --no-dev --optimize-autoloader'를 실행하여 관련 패키지 (dev-package 무시)와 최적화 된 자동 로더 (getn' 클래스를 찾기 위해 IO를 검색해야 함). –

+0

그래, 내가 (버전에 관한) 의미하지만, 충분히 구체적이지 않았다 - 그것을 지적 해 주셔서 고마워. – bcmcfc

+1

Symlinks FTW. 또한 필요한 경우 이전 버전으로 쉽게 되돌릴 수 있습니다. –