>  기사  >  개발 도구  >  PHP 개발자가 알아야 할 5가지 Composer 팁

PHP 개발자가 알아야 할 5가지 Composer 팁

藏色散人
藏色散人앞으로
2019-12-21 16:56:152354검색

Composer는 차세대 PHP 종속성 관리 도구입니다. 이 기사에서는 PHP 개발의 편의성을 높이기 위해 Composer 사용에 대한 5가지 팁을 소개합니다.

PHP 개발자가 알아야 할 5가지 Composer 팁

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.

ru, 무엇이 잘못되었나요? 당황하지 말 것! 작곡가.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에 저장됩니다. /나뭇가지 /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% 손실될 수 있습니다.

더 많은 작곡가 관련 기술 기사를 보려면

composer

칼럼을 방문하세요: https://www.php.cn/tool/composer/

위 내용은 PHP 개발자가 알아야 할 5가지 Composer 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제