【composer】composer 常用命令

小破孩
2022-06-23 / 0 评论 / 235 阅读 / 正在检测是否收录...
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
0

评论 (0)

取消