1、composer安装

官方地址:https://getcomposer.org/download/
下载地址:https://getcomposer.org/Composer-Setup.exe
下载后直接安装即可。

2、检查是否安装完成

composer --version
composer -V 注意这里要大写
composer -vvv 命令查看更详细的信息,及帮助。

composer -V
Composer version 2.0.9 2021-01-27 16:09:27

3、composer配置镜像

因为composer是国外地址,访问起来特别慢,所以使用的时候很容易出现安装失败的情况,这里的解决办法就是使用镜像,使用composer config命令配置镜像地址即可。这里推荐使用阿里云composer镜像源,优点是快速稳定更新快

3.1、全局配置(推荐)

所有项目都会使用该镜像地址:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

取消配置:

composer config -g --unset repos.packagist

3.2、当前项目配置

仅修改当前工程配置,仅当前工程可使用该镜像地址:

composer config repo.packagist composer https://mirrors.aliyun.com/composer/

取消配置:

composer config --unset repos.packagist

4、composer使用

4.1、install命令

install命令可以用于项目初始化后,初次安装依赖,且会优先读取composer.lock中的版本号,以尽可能的保证协作开发中包版本的一致性。

composer install

4.2、require命令(不编辑composer.json的情况下安装库)

你可能会觉得每安装一个库都需要修改composer.json太麻烦,那么你可以直接使用require命令。 require
命令,添加新的依赖包到composer.json文件中并执行更新。

composer require laravel/ui x.0.0 #下载指定版本,可指定 

这个方法也可以用来快速地新开一个项目。init命令有–require选项,可以自动编写composer.json:(注意我们使用-n,这样就不用回答问题)

$ composer init --require=foo/bar:1.0.0 -n
$ cat composer.json
{
    "require": {
        "foo/bar": "1.0.0"
    }
}

4.3、update命令

update命令无法在命令行中指定包版本号,需要手动修改composer.json文件

composer update

仅更新单个库
只想更新某个特定的库,不想更新它的所有依赖,很简单:

composer update foo/bar

4.4、创建项目

初始化的时候,你试过create-project命令么?
2.2.0 这会自动克隆仓库,并检出指定的版本。克隆库的时候用这个命令很方便,不需要搜寻原始的URI了。

composer create-project doctrine/orm path 2.2.0

4.5、其他常用命令

composer list:获取帮助信息;
composer init:以交互方式填写composer.json文件信息;
composer search:在当前项目中搜索依赖包;
composer show:列举所有可用的资源包;
composer show -t:树状列举所有可用的资源包;
composer show laravel/framework:这将向您显示安装的版本、它的许可证和依赖项以及它在本地安装的位置等信息。
composer outdated: 检测一下已安装的包,哪些有可以升级的;
composer outdated -m:如果希望高亮显示小的升级版本,可以使用 outdated 命令,以 --minor-only 或者 -m 参数 ;
composer why vlucas/phpdotenv:如果您想知道安装特定软件包的原因,可以使用 why 命令来确定哪些依赖项需要它;
composer why-not laravel/framework 5.8 -t:有时,一个或多个已安装的软件包将阻止安装或更新软件包。 ;
composer validate:检测composer.json文件是否有效;
composer create-project:基于composer创建一个新的项目;
composer dump-autoload:在添加新的类和目录映射是更新autoloader
composer remove laravel/ui :删除依赖后还需要去vender文件夹里,手动删除
composer status -v:您可以使用 --verbose 或 -v 参数来查看本地修改的软件包和文件
composer licenses:用于查询许可的完整列表:

5、奇淫巧技

5.1、考虑缓存,dist包优先

最近一年以来的Composer会自动存档你下载的dist包。默认设置下,dist包用于加了tag的版本,
例如"symfony/symfony":“v2.1.4”,或者是通配符或版本区间,“2.1.*“或”>=2.2,<2.3-dev”(如果你使用stable作为你的minimum-stability)。
dist包也可以用于诸如dev-master之类的分支,Github允许你下载某个git引用的压缩包。
为了强制使用压缩包,而不是克隆源代码,你可以使用install和update的–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.2、若要修改,源代码优先

当你需要修改库的时候,克隆源代码就比下载包方便了。你可以使用–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,?]?

5.3、为生产环境作准备
最后提醒一下,在部署代码到生产环境的时候,别忘了优化一下自动加载:

composer dump-autoload --optimize

安装包的时候可以同样使用–optimize-autoloader。不加这一选项,你可能会发现20%到25%的性能损失。

6、其它

参考文档:https://docs.phpcomposer.com/03-cli.html

参考链接:https://blog.csdn.net/jugtba/article/details/117379062

最后修改:2022 年 05 月 14 日 03 : 29 PM
对您有帮助的话,请赏包辣条吧 ^~^