Composer

이하루·2024년 7월 29일
0

Composer는 PHP의 의존성 관리 도구로, PHP 프로젝트에 필요한 라이브러리, 패키지 등을 쉽게 관리하고 자동으로 설치해 주는 도구이다.

✅ 주요기능

  1. 의존성 관리 : 해당 프로젝트에 필요한 라이브러리의 버전을 독립적으로 정의, 관리함으로써, 이를 바탕으로 설치, 업데이트, 제거할 수 있다.

  2. 자동 로딩 : 설치된 라이브러리의 클래스를 vendor/autoload.php에 설정함으로써, 라이브러리를 하나하나 수동으로 포함할 필요없이 autoload.php를 포함하는 것만으로 모든 라이브러리의 사용을 가능하게 한다.

✅ 구성

  1. composer.json : 프로젝트의 의존성(사용하는 라이브러리, 버전 등)을 정의하는 파일
{
    "name": "my-project",
    "require": {
        "monolog/monolog": "^2.0",
        "guzzlehttp/guzzle": "^7.0"
    }
}
  1. composer.lock : composer 내부 라이브러리에 실제로 설치된 패키지와 정확한 버전정보를 기록하는 파일로, "composer install + 해당파일이 존재하지 않을 경우" 혹은 "composer update"를 할때 자동으로 생성된다.
    실제 vendor디렉토리 내에서 관리되어지는 라이브러리들은 해당 파일의 버전을 기반으로 설치된다.
{
    "packages": [
        {
            "name": "monolog/monolog",
            "version": "2.0.0",
            "source": {
                "type": "git",
                "url": "https://github.com/monolog/monolog.git",
                "reference": "abcdef1234567890"
            }
        },
        {
            "name": "guzzlehttp/guzzle",
            "version": "7.0.0",
            "source": {
                "type": "git",
                "url": "https://github.com/guzzle/guzzle.git",
                "reference": "123456abcdef7890"
            }
        }
    ]
}
  1. autoload.php : composer가 생성한 자동 로딩 파일로, vendor디렉토리 내부에 있으며 PHP 프로젝트의 클래스 파일을 자동 로드하기 위해 사용된다. 아래의 코드처럼 autoload.php만을 포함시킴(require)으로써, vendor디렉토리 내부의 모든 패키지의 클래스를 자동으로 사용할 수 있게 해준다.
// 보통 엔트리 포인트(index.php)에 해당 코드가 포함되어있음
require __DIR__.'/../vendor/autoload.php';

✅ 주요 명령어

composer install : composer.lock에 정의된 패키지를 설치

composer update : 패키지를 업데이트한다. composer.json에 정의된 버전 범위의 최신 버전을 composer.lock에 반영 후, 해당 패키지를 설치한다.

composer require [package] : 지정된 패키지를 composer 파일에 추가/설치한다.

composer remove [package] : 지정된 패키지를 composer 파일에 제외/삭제한다.

profile
어제보다 더 나은 하루

0개의 댓글