php composer 使用

命令缩写

  • install / i
  • require / r
  • update / u
  • rm / remove / uninstall
  • reinstall
  • search - 查询一个包
  • outdated - 查看哪些已经过期了
  • depends / why
    • 可以查看依赖包信息
  • dump / dump-autoload / dumpautoload
    • 重新生成 autoload.php 文件
  • clear-cache / clearcache / cc
Composer relies on tools like `7z` (or `7zz`), `gzip`, `tar`, `unrar`, `unzip` and `xz`. 
最好安装一个,这样拉取依赖的时候比较快

依赖包从这里找 https://packagist.org/

To initially install the defined dependencies for your project, you should run the update command.

php composer.phar update
  • update 主要做了2个事情:1.生成lock文件,2拉取对应依赖。

image-20250206114651202

image-20250206115138570

如果 composer.lock 已经存在,这时候你运行 composer install 安装的依赖的版本会是 composer.lock 里指定的版本,而不是composer.json 里的可以安装的最新最新的版本。这样做是为了保证一致性。

怎么把依赖更新到最新版本呢?

php composer.phar update
php composer.phar update monolog/monolog [...]   # 单独更新某一个库,而不是全部更新。
php composer.phar update laravel/framework symfony/console # 一次性更新多个库

这个命令会拉取最新的依赖,并且把lock文件里头的依赖更新为最新版本。

update 和 install 区别总结

  • install 不会更新 composer.lock ,他会根据 composer.lock 指定版本拉取对应依赖
  • update 会拉取 composer.json 指定的依赖的最新版,并且会更新 composer.lock 文件

如何设置自动载入

{
    "autoload": {
        "psr-4": {"Acme\\": "src/"}
    }
}

php composer.phar dump  # 还要重新生成 vendor/autoload.php 文件
  • 把 src 映射为 Acme 命令空间。

版本问题

{
    "name": "acme/hello-world",
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

{
    "version": "1.0.0"
}
  • 给自己的项目设置一个名称
  • 设置一个版本

composer i 命令的一个可选项

  • --dev Install packages listed in require-dev (this is the default behavior).

composer u 命令

  • 如果你想更新你的依赖包版本,那么就使用u命令。
  • This will resolve all dependencies of the project and write the exact versions into composer.lock.
php composer.phar update vendor/package vendor/package2   ## 更新指定的几个库
composer u "google/*"   ## 可以使用通配符

版本降级处理

If you want to downgrade a package to a specific version without changing your composer.json you can use --with and provide a custom version constraint:

composer update --with vendor/package:2.0.1   # 降级版本,这个很重要
composer u --with respect/validation:2.3.7   # 这个命令运行成功了。
# respect/validation  2.3.7 可以拉取,但是2.4.0 无法拉取问题

查看项目所有依赖关系

composer show -t
composer show --tree
awurth/slim-validation v5.0.1 A wrapper around the respect/validation PHP validation library for easier error handling and display
├──php >=8.1
├──respect/validation ^2.0
│  ├──php ^8.1 || ^8.2
│  ├──respect/stringifier ^0.2.0
│  │  └──php >=7.1
│  └──symfony/polyfill-mbstring ^1.2
│     └──php >=7.2
├──symfony/options-resolver ^6.0 || ^7.0
│  ├──php >=8.2
│  └──symfony/deprecation-contracts ^2.5|^3
│     └──php >=8.1
└──symfony/property-access ^6.0 || ^7.0
composer require awurth/slim-validation:^5.0.1  # 库名和版本约束之间要有冒号,或者空格
composer why awurth/slim-validation -t 
composer why respect/validation   # 可以查看哪里上层的包依赖了respect/validation
# composer require vendor/package:version
composer require symfony/console:5.4.0

更新 composer 软件本身

composer self-update

lock file 输出内容

Writing lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
9 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.

Leave a Comment

Your email address will not be published. Required fields are marked *

PHP 8.1.1 - 17.247 ms, 0 Q