Composer는 차세대 PHP 종속성 관리 도구입니다. 소개 및 기본 사용법에 대해서는 "PHP 종속성 관리 도구 작성기 설치 및 사용" 기사를 읽어보세요. 이 기사에서는 PHP 개발의 편의성을 높이기 위해 Composer 사용에 대한 5가지 팁을 소개합니다.
1. 단일 라이브러리만 업데이트
특정 라이브러리만 업데이트하고 모든 종속성을 업데이트하고 싶지 않은 경우 매우 간단합니다.
composer update foo/bar
또한 이 트릭을 사용하여 "경고 메시지 문제"를 해결할 수도 있습니다. 다음과 같은 경고 메시지를 본 적이 있을 것입니다.
Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.
젠장, 무슨 일이 있었던 걸까요? 당황하지 말 것! 작곡가.json을 편집하면 다음과 같은 내용이 표시됩니다. 예를 들어, 라이브러리 설명, 작성자, 추가 매개변수 또는 공백과 같은 세부사항을 추가하거나 업데이트하면 파일의 md5sum이 변경됩니다. 그러면 Composer는 해시 값이 작곡가.lock에 기록된 값과 다르다는 경고를 표시합니다.
그럼 우리는 어떻게 해야 할까요? update 명령은 잠금 파일을 업데이트할 수 있지만 일부 설명만 추가하는 경우 라이브러리를 업데이트해서는 안 됩니다. 이 경우 아무것도 업데이트하지 마세요.
$ composer update nothing Loading composer repositories with package information Updating dependencies Nothing to install or update Writing lock file Generating autoload files
이렇게 하면 Composer는 라이브러리를 업데이트하지 않지만, Composer.lock은 업데이트됩니다. update 명령의 키워드는 아무것도 아닙니다. 이 패키지로 인해 발생하는 것은 없습니다. foobar를 입력해도 결과는 동일합니다.
사용 중인 Composer 버전이 충분히 새로운 버전인 경우 --lock 옵션을 직접 사용할 수 있습니다.
composer update --lock
2.composer.json을 편집하지 않고 라이브러리 설치
라이브러리를 설치할 때마다 작곡가.json을 수정하는 것이 너무 번거로울 수 있지만 require 명령을 직접 사용할 수 있습니다.
composer require "foo/bar:1.0.0"
이 방법을 사용하면 새 프로젝트를 빠르게 열 수도 있습니다. init 명령에는 자동으로 작곡가.json을 작성할 수 있는 --require 옵션이 있습니다. (질문에 답할 필요가 없도록 -n을 사용합니다.)
$ composer init --require=foo/bar:1.0.0 -n $ cat composer.json { "require": { "foo/bar": "1.0.0" } }
3. 파생이 쉽습니다
초기화 중에 create-project 명령을 사용해 보셨나요?
composer create-project doctrine/orm path 2.2.0
이렇게 하면 저장소가 자동으로 복제되고 지정된 버전이 체크아웃됩니다. 이 명령은 원본 URI를 검색할 필요가 없으므로 라이브러리를 복제할 때 사용하기 매우 편리합니다.
4. 캐싱을 고려하고 dist 패키지에 우선순위를 부여합니다
작년의 Composer는 다운로드한 dist 패키지를 자동으로 보관합니다. 기본적으로 dist 패키지는 "symfony/symfony": "v2.1.4", 와일드카드나 버전 범위, "2.1.*" 또는 ">=2.2,<2.3-dev"와 같은 태그가 지정된 버전에 사용됩니다. (최소 안정성으로 stable을 사용하는 경우
dist 패키지는 dev-master와 같은 브랜치에도 사용할 수 있습니다. Github를 사용하면 특정 git 참조의 압축 패키지를 다운로드할 수 있습니다. 소스 코드를 복제하는 대신 tarball을 강제로 사용하려면 설치 및 업데이트의 --prefer-dist 옵션을 사용할 수 있습니다.
다음은 예입니다(실행 시간을 표시하기 위해 --profile 옵션을 사용했습니다).
$ composer init --require="twig/twig:1.*" -n --profile Memory usage: 3.94MB (peak: 4.08MB), time: 0s $ composer install --profile Loading composer repositories with package information Installing dependencies - Installing twig/twig (v1.12.2) Downloading: 100% Writing lock file Generating autoload files Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s $ rm -rf vendor $ composer install --profile Loading composer repositories with package information Installing dependencies from lock file - Installing twig/twig (v1.12.2) Loading from cache Generating autoload files Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s
여기서 twig/twig:1.12.2의 압축 패키지는 ~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip에 저장됩니다. 패키지를 다시 설치할 때 직접 사용하십시오.
5. 수정을 고려하세요. 소스 코드를 먼저 고려하세요
라이브러리 수정이 필요한 경우 패키지를 다운로드하는 것보다 소스코드를 복제하는 것이 더 편리합니다. --prefer-source를 사용하여 복제 소스 코드를 강제로 선택할 수 있습니다.
composer update symfony/yaml --prefer-source
다음으로 파일을 수정할 수 있습니다.
composer status -v You have changes in the following dependencies: /path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml: M Dumper.php
수정된 라이브러리를 업데이트하려고 하면 Composer가 알림을 표시하고 수정 사항을 취소할지 묻습니다.
$ composer update Loading composer repositories with package information Updating dependencies - Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0) The package has modified files: M Dumper.php Discard changes [y,n,v,s,?]?
제작환경 준비
마지막으로 코드를 프로덕션 환경에 배포할 때 자동 로딩을 최적화하는 것을 잊지 마세요.
composer dump-autoload --optimize
패키지를 설치할 때 --optimize-autoloader를 사용할 수도 있습니다. 이 옵션이 없으면 성능이 20~25% 손실될 수 있습니다.
도움이 필요하거나 특정 명령의 세부정보를 알고 싶다면 공식 문서를 읽거나 JoliCode에서 만든 이 대화형 치트 시트를 확인하세요.