composer.lock 은 자동으로 관리되는 파일이므로 열어 볼 일이 많지 않지만, composer.json 은 직접 편집하고 설정하는 곳이므로 실질적으로 composer 관리의 핵심이라고 할 수 있다.
IDE를 사용하면 알아서 잘 설치하고 의존성을 만들어주기도 하지만, 기본적인 내용을 알고 있어야 관리가 가능하므로 이번엔 composer.json 에 대해 필수적으로 알아야 하는 부분만을 짚고 넘어간다.
자세한 설정을 원하면 공식문서나 다른 글을 찾아 보기를 바란다.
이런저런 설정들이 있지만 생략하고, 중요한 부분은 다음과 같다.
{ # 여기에 설치할 의존성 패키지들의 이름과 버전이 명시된다. "require": { "pda/pheanstalk": "^3.1", "league/flysystem": "^1.0", "guzzlehttp/guzzle": "^6.3", "monolog/monolog": "^1.23", "league/flysystem-sftp": "^1.0", "ext-json": "*", "ext-pdo": "*", "ext-mbstring": "*", "ext-mongodb": "^1.5.0", "mongodb/mongodb": "^1.4", "ext-ftp": "*" }, # 개발 버전에 추가로 설치할 의존성 패키지들을 명시한다. 설치 옵션(install이나 update 시 --no-dev 옵션 추가)에 따라 설치를 안할수도 있다 "require-dev": { "phpdocumentor/phpdocumentor": "2.*", "phpunit/phpunit": "^7.5", "jms/serializer": "1.7.*" }, "autoload": { # PSR-4 autoloading 설정을 정의한다. "psr-4" : { # key 에 해당하는 부분이 네임스페이스이며, value 는 클래스가 위치한 경로이다. # namespace 는 \을 두번 써서 명시하고 경로는 project root 로부터 상대경로를 입력한다. "" : "src/", # 네임스페이스가 없으면 src/ 에서 찾는다. "MyName\\MyProject\\Utils\\" : "", # 이 네임스페이스는 프로젝트 루트에서 찾는다 "MyName\\MyProject\\" : "src/MyProject/", # MyName\MyProject 네임스페이스는 src/MyProject/ 에 있다. "MyName\\MyProject\\Handlers\\" : "src/Handlers/", } }, # 개발버전의 오토로딩을 별도로 정의할 수 있다. 그외는 동일 "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }, # composer 로 간단한 스크립트를 실행시킬 수 있다. "scripts": { # composer start 라고 커맨드를 입력하면 개발용 내장웹서버를 localhost 8080포트로 public/ 을 document root 로 하여 실행한다. "start": "php -S localhost:8080 -t public", "test": "phpunit" # composer test 를 입력하면 phpunit 을 실행한다. } } |
require 와 require-dev 의 버전 설정
설치될 패키지의 버전을 명시하는 부분이다.
보통 composer require 등으로 패키지를 설치하면 추천해주는 버전설정이 자동으로 명시되므로 갖다 쓰는게 주목적일 경우 특별한 일이 없다면 그냥 둬도 된다.
다만 버전이 변경되면서 패키지들간의 호환성 혹은 프로젝트에서 문제가 생기는 경우가 간혹 있기 때문에.. - composer update 를 했다가 멘붕이 왔던 기억이.. - 이럴 경우에는 composer.json 에서 직접 버전을 설정해서 맞춰줘야 하는 일이 생기므로 어떻게 설정하는지 알고 있는것이 좋다.
예시를 들어 설명한다.
"*" -> 모든 버전
"1.0.5" -> 정확하게 1.0.5 버전만을 설치한다.
"1.0.*" -> 1.0.x 버전으로 1.0.0 ~ 1.0.9 와 같이 1.1을 넘지 않는 버전을 말한다.
"1.0 - 2.0" -> 명시된 버전 사이의 어떤 버전도 허용한다.
"~1.2" -> 1.2 버전 이상의 설치를 허용하지만 2.0 미만이다. 메이저 버전의 넘버링은 넘지 않는다.
"^1.2" -> 1.2 버전 이상의 설치를 허용하지만 2.0 미만이다. 메이저 버전의 넘버링은 넘지 않는다.
"~"과 "^"의 차이점이 문서에 설명되어 있긴 한데 차이를 잘 모르겠다. 이런 버전 명시는 마이너 버전의 업데이트는 하위호환성을 유지한다는 전제 하에 사용하면 되겠다.
'PHP' 카테고리의 다른 글
composer (6) 추천 패키지 소개 (0) | 2020.05.30 |
---|---|
composer (4) 자주 사용하는 커맨드 와 composer.json, composer.lock (0) | 2020.05.24 |
composer (3) 첫 사용 (0) | 2020.05.23 |
composer (2) 설치 (0) | 2020.05.23 |
composer (1) 기본개념 (0) | 2020.05.17 |