composer 운용에 있어 자주 사용하게 될 몇개의 커맨드와 가장 중요한 두 개의 파일인 composer.json , composer.lock 에 대해 꼭 알아야 될 부분을 짚고 넘어가자.
일상적인 작업에서는 이 범위 이상을 넘어가는 일이 많지 않을 것이다.
composer.json / composer.lock
composer.json 은 패키지명, 라이센스, 제작자 정보 등등의 기본 정보부터 어떤 의존성 패키지를 어느 버전으로 설치할 지, 프로젝트의 PSR-4 Autloading 을 어떻게 설정할 지, composer 를 사용하여 실행할 커맨드, packgist 이외에 어떤 추가 저장소가 더 사용되는지 등을 json 형식으로 기록해 놓는 파일이다.
수동으로 편집하고 적용할 수 있다. (Autoloading 설정을 변경한다던지, require 패키지를 직접 추가한다던지)
composer.lock 은 composer.json 을 통해 설치된 패키지들의 정확한 버전(composer.json 에 명시되는 패키지의 버전은 특정 버전만을 명시할 수도, 특정 버전 이상의 버전을 명시할 수도 있다)과 해당 페키지의 의존성 등이 기록되는 곳으로 composer 에 의해 자동으로 생성되고 관리되는 파일이다. composer 는 composer install 명령으로 패키지가 설치될 때 composer.lock 파일을 보고 설치하게 된다.
composer basic commands
composer 연동(초기화)
>composer init
프로젝트 루트에서 composer init 을 실행하면 ./vendor 를 생성하고 하위에 기본적인 컴포저 패키지를 설치하고 composer.json 파일을 생성한다.
최초로 내 project 에 composer 를 연동하려 할 때 사용한다.
>composer create-project {패키지명} {프로젝트 루트}
{프로젝트 루트} 에 명시된 {패키지명}을 함께 설치하여 프로젝트를 시작할 수 있는 환경을 만들어 준다.
실행하면 프로젝트 루트 경로의 ./vendor 하위에 패키지가 설치되고 composer.json 과 composer.lock 이 생성된다.
Laravel, Slim, Codeigniter 등 프레임워크를 사용하는 프로젝트를 시작하려고 할 때 프레임워크를 설치하기 위해 주로 사용된다 (Codeingiter 는 버전이 4로 올라가면서 composer 를 사용할 수 있게 되었다)
패키지 추가
>composer install {패키지}
composer install 은 composer.lock 을 보고 여기에 정확하게 명시되어 있는 버전대로 설치한다.
다른 서버에서 git clone 등으로 프로젝트를 가져왔을 때, 해당 프로젝트의 의존성을 버전까지 정확히 맞춰서 사용하려면 composer install 을 사용한다.
>composer require {패키지}
명시된 패키지를 vendor 하위에 설치하고 composer.json 과 composer.lock 에 추가한다. 별도의 옵션이 없으면 최신 버전이 설치된다.
* composer require 는 해당 패키지의 최신 버전을 설치한다.
패키지 삭제
>composer remove {패키지}
기 설치되어있는 패키지를 삭제한다.
기타
>composer show
무엇이 설치되어 있는지를 리스트로 보여준다.
>composer update
설치된 패키지들의 버전을 업데이트한다. 이때는 composer.json 에 명시된 패키지 버전의 규칙을 따른다. composer.json 에 명시되어있지만 설지되지 않은 상태라면 새로 설치한다.
>composer dump-autoload
프로젝트에서 오토로딩이 되지 않으면 vendor/autoload.php 에 오토로딩 정보가 없다는 의미이다. 이 때 dump-autoload 커맨드로 오토로딩에 대한 정보를 업데이트해 준다. 보통은 패키지를 설치하면 자동으로 오토로딩 정보가 갱신되며, 프로젝트 내에서 내가 만든 클래스가 오토로딩이 안된다던가 할 때 실행한다.
'PHP' 카테고리의 다른 글
composer (6) 추천 패키지 소개 (0) | 2020.05.30 |
---|---|
composer (5) composer.json (0) | 2020.05.29 |
composer (3) 첫 사용 (0) | 2020.05.23 |
composer (2) 설치 (0) | 2020.05.23 |
composer (1) 기본개념 (0) | 2020.05.17 |