PHP 도 Java 의 maven/gradle, ruby 의 gem/gendler 처럼 패키지 및 의존성 관리 도구인 composer 가 있고 maven central repository 처럼 패키지 중앙 저장소가 있다.
가장 유명한 중앙 저장소는 https://packagist.org/ 이며 여기에 직접 만든 PHP Composer 패키지를 Packagist 에 등록하는 방법에 대해서 알아 보자.
로그인
패키지를 업로드 하려면 먼저 계정을 생성하거나 github 계정과 연결 해야 하며 이 글에서는 별도의 계정을 만들지 않고 github 계정과 연결하는 방법을 설명한다.
- https://packagist.org/ 에 연결한 후에 우측 상단의 Login 을 클릭한다.
- Login with github 를 클릭한다.
- github 에 로그인 하지 않았다면 로그인한다. 로그인 되었다면 다음과 같이 application 에서 github 연결을 허용하겠다는 메시지가 뜬다. Authorize application 을 클릭한다.
- 인증이 끝나면 로그인이 완료된다.
Package 올리기
- packagist 에 올리려면 먼저 github 나 bitbucket 에 프로젝트를 만들어 놓고 release 해야 한다.
- 프로젝트의 main 에는 composer.json 이 존재해야 한다.
- 상단의 Submit 을 클릭한다.
- 프로젝트의 URL 을 입력하고 Check 를 클릭한다.
패키지가 이상없다면 Check 가 Submit 으로 변경된다. 에러가 있다면 메시지를 보고 해결해야 한다.
주로 많이 하는 실수는 composer.json 누락, json 내 package name 누락, 그리고 release 안 하기 등이다.
{
"name": "lesstif/test-proj",
"description": "test project"
}
CODE
- Submit 을 누르면 등록이 완료된다.
자동 업데이트 설정
github 에 패키지의 새 버전을 릴리스했다고 가정해 보자. 릴리스마다 Packagist 에도 올려야 한다면 매우 번거로울 것이다. github 의 hook 을 설정하면 새 버전 릴리스시 자동으로 Packagist 에 반영되도록 할 수 있다.
- https://packagist.org/profile/ 에 들어간 후에 Your API Token 에 있는 토큰을 복사한다.
- github 에 로그인 한후에 프로젝트로 들어간다.
- 우측의 프로젝트 Settings 버튼을 클릭한다. 상단의 Settings 버튼은 계정 설정이므로 프로젝트 설정으로 들어가야 한다.
- Integrations & Services 를 클릭한다.
- Add Service 를 클릭한 후에 Packagist 를 찾아서 등록한다.
- User 항목에 id를 입력하고 Token 항목에 1번에서 복사한 API token을 붙여 넣는다.
- Add Service 를 클릭하여 저장한다.
참고