PHP 도 Java 의 maven/gradle, ruby 의 gem/gendler 처럼 패키지 및 의존성 관리 도구인 composer 가 있고 maven central repository 처럼 패키지 중앙 저장소가 있다.

가장 유명한 중앙 저장소는 https://packagist.org/ 이며 여기에 직접 만든 PHP Composer 패키지를 Packagist 에 등록하는 방법에 대해서 알아 보자.

 

로그인

패키지를 업로드 하려면 먼저 계정을 생성하거나 github 계정과 연결 해야 하며 이 글에서는 별도의 계정을 만들지 않고 github 계정과 연결하는 방법을 설명한다.

  1. https://packagist.org/ 에 연결한 후에 우측 상단의 Login 을 클릭한다.
     
  2. Login with github 를 클릭한다.
     
  3. github 에 로그인 하지 않았다면 로그인한다. 로그인 되었다면 다음과 같이 application 에서 github 연결을 허용하겠다는 메시지가 뜬다. Authorize application 을 클릭한다.
     
  4. 인증이 끝나면 로그인이 완료된다.

 

Package 올리기

  • packagist 에 올리려면 먼저 github 나 bitbucket 에 프로젝트를 만들어 놓고 release 해야 한다.
  • 프로젝트의 main 에는 composer.json 이 존재해야 한다.
  1. 상단의 Submit 을 클릭한다.
  2. 프로젝트의 URL 을 입력하고 Check 를 클릭한다.
     
  3. 패키지가 이상없다면 Check 가 Submit 으로 변경된다. 에러가 있다면 메시지를 보고 해결해야 한다.
    주로 많이 하는 실수는 composer.json 누락, json 내 package name 누락, 그리고 release 안 하기 등이다.
     

    {
        "name": "lesstif/test-proj",
        "description": "test project"
    }
    CODE
  4. Submit 을 누르면 등록이 완료된다.
     

자동 업데이트 설정

github 에 패키지의 새 버전을 릴리스했다고 가정해 보자. 릴리스마다 Packagist 에도 올려야 한다면 매우 번거로울 것이다. github 의 hook 을 설정하면 새 버전 릴리스시 자동으로 Packagist 에 반영되도록 할 수 있다.

  1. https://packagist.org/profile/ 에 들어간 후에 Your API Token 에 있는 토큰을 복사한다.
     
  2. github 에 로그인 한후에 프로젝트로 들어간다.
  3. 우측의 프로젝트 Settings 버튼을 클릭한다. 상단의 Settings 버튼은 계정 설정이므로 프로젝트 설정으로 들어가야 한다.
     
  4. Integrations & Services  를 클릭한다.
  5. Add Service 를 클릭한 후에 Packagist 를 찾아서 등록한다.
     
  6. User 항목에 id를 입력하고 Token 항목에 1번에서 복사한 API token을 붙여 넣는다.
     
  7. Add Service 를 클릭하여 저장한다.

 

참고