[Laravel] Composer 사용법
Composer 사용법
composer.json
패키지명, 라이센스, 제작자 정보 등등의 기본 정보부터 어떤 의존성 패키지를 어느 버전으로 설치할 지, 프로젝트의 PSR-4 Autloading 을 어떻게 설정할 지, composer 를 사용하여 실행할 커맨드, packgist 이외에 어떤 추가 저장소가 더 사용되는지 등을 json 형식으로 기록해 놓는 파일이다.
composer.lock
composer.json 을 통해 설치된 패키지들의 정확한 버전(composer.json 에 명시되는 패키지의 버전은 특정 버전만을 명시할 수도, 특정 버전 이상의 버전을 명시할 수도 있다)과 해당 페키지의 의존성 등이 기록되는 곳으로 composer 에 의해 자동으로 생성되고 관리되는 파일이다. composer 는 composer install 명령으로 패키지가 설치될 때 composer.lock 파일을 보고 설치하게 된다.
기본적인 명령어
composer init
composer 연동(초기화)
프로젝트 루트에서 composer init 을 실행하면 ./vendor 를 생성하고 하위에 기본적인 컴포저 패키지를 설치하고 composer.json 파일을 생성한다.
최초로 내 project 에 composer 를 연동하려 할 때 사용한다.
composer create-project
composer create-project {패키지명} {프로젝트 루트}
composer create-project laravel/laravel example-app
{프로젝트 루트} 에 명시된 {패키지명}을 함께 설치하여 프로젝트를 시작할 수 있는 환경을 만들어 준다.
실행하면 프로젝트 루트 경로의 ./vendor 하위에 패키지가 설치되고 composer.json 과 composer.lock 이 생성된다.
Laravel, Slim, Codeigniter 등 프레임워크를 사용하는 프로젝트를 시작하려고 할 때 프레임워크를 설치하기 위해 주로 사용된다 (Codeingiter 는 버전이 4로 올라가면서 composer 를 사용할 수 있게 되었다)
composer install
패키지 추가
composer install {패키지}
composer install 은 composer.lock 을 보고 여기에 정확하게 명시되어 있는 버전대로 설치한다.
다른 서버에서 git clone 등으로 프로젝트를 가져왔을 때, 해당 프로젝트의 의존성을 버전까지 정확히 맞춰서 사용하려면 composer install 을 사용한다.
현재 라라벨의 모든 것을 새로 추가할 경우 기존 vendor 폴더를 삭제하거나 혹은 verdor/composer를 삭제후 composer install을 하면 새로 인스톨된다.
composer require
패키지 추가
composer require {패키지}
composer require vendor/package:version // 특정 버전을 설치할 경우
composer require --dev vendor/package:version // dev 용으로 설치(composer.json > require-dev 에 리스트 된다.)
명시된 패키지를 vendor 하위에 설치하고 composer.json 과 composer.lock 에 추가한다. 별도의 옵션이 없으면 최신 버전이 설치된다.
- composer require 는 해당 패키지의 최신 버전을 설치한다.
composer remove
패키지 삭제
composer remove {패키지}
현재 설치되어있는 패키지를 삭제한다.
composer show
무엇이 설치되어 있는지를 리스트로 보여준다.
composer update
설치된 패키지들의 버전을 업데이트한다. 이때는 composer.json 에 명시된 패키지 버전의 규칙을 따른다. composer.json 에 명시되어있지만 설지되지 않은 상태라면 새로 설치한다.
composer dump-autoload
프로젝트에서 오토로딩이 되지 않으면 vendor/autoload.php 에 오토로딩 정보가 없다는 의미이다. 이 때 dump-autoload 커맨드로 오토로딩에 대한 정보를 업데이트해 준다. 보통은 패키지를 설치하면 자동으로 오토로딩 정보가 갱신되며, 프로젝트 내에서 내가 만든 클래스가 오토로딩이 안된다던가 할 때 실행한다.