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
版权属于:
小破孩
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)