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는 라이브러리를 업데이트하지 않지만 작곡가.잠금은 업데이트합니다. 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에 저장되어 있으며 다음과 같이 할 수 있습니다. 패키지 재설치 시 바로 사용하세요. --prefer-source를 사용하여 소스 코드를 복제하세요.
다음으로 파일을 수정할 수 있습니다.composer update symfony/yaml --prefer-source수정된 라이브러리를 업데이트하려고 하면 Composer가 알림을 보내며 수정을 포기할지 묻습니다. :
composer status -v You have changes in the following dependencies: /path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml: M Dumper.php프로덕션 환경을 준비하세요마지막으로 프로덕션 환경에 코드를 배포할 때 잊지 마세요. 자동 로딩 최적화:
$ 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,?]?패키지를 설치할 때 --optimize-autoloader를 사용할 수도 있습니다. 이 옵션이 없으면 성능이 20~25% 손실될 수 있습니다.
composer dump-autoload --optimize