编程

Composer 2.4 的新特性

1173 2022-11-24 18:38:22

Composer,PHP 事实上的依赖关系管理器。Composer 2.4 版本中引入了几个新功能。它带来了新的命令,如 audit 和 bump,支持在受支持的 shell上 完成 shell,建议在适当的地方安装带有 --dev 标志的包,改进的进程信号处理等等。

与以前的次要版本 Composer 2.3 类似,Composer 2.4 也需要 PHP 7.2。使用较旧 PHP 版本的应用程序可能必须使用 Composer 2.2,这是一个长期支持版本,以便于首先迁移到 Composer 2.x。

新增 composer bump 命令

bump 是 Composer 2.4 中引入的一个新命令,它通过将 Composer.json 文件中列出的包版本约束升级到约束允许的最新版本来 “bump”。

composer bump 使用新的版本号更新 composer.json,但仅限允许的 major/minor/patch 范围内。例如,如果 composer.json 文件需要带有 ^9.4 版本约束的 phpunit/phpunit 包,这意味着允许 composer 安装 >=9.40 和 <10 范围内的 phpunit/phpunit 版本。

{
    "require": {
-        "phpunit/phpunit": "^9.4"
+        "phpunit/phpunit": "^9.5.20"
    }
}

Composer bump 命令不会更新平台需求,例如 PHP 版本的扩展版本。

新增 composer audit 命令

Composer 2.4 添加了一个名为 composer audit 的新命令,该命令可以扫描已安装的软件包以查找报告的安全漏洞。如果安装了任何具有已知安全漏洞的软件包,则存在错误代码。

默认情况下,报告的安全漏洞由 Packagist 获取。

Composer `audit` command output

自动扫描报告的安全漏洞

在 Composer 2.4 中,当安装、删除或更新新软件包时,Composer 会自动扫描已安装的软件包以查找报告的漏洞。这基本上与在 composer requirecomposer removecomposer update 命令之后自动运行 composer audit 相同。

可以在 require 和 update 命令时通过传入 --no-audit 选项关闭 audit 功能:

composer require foo/bar --no-audit
composer update --no-audit

通过将值传递给新的 --audit-format 标志,还可以将 audit 的格式配置为 summary、plain、table 或 json。--audit-format 默认值为 summary。

composer update --audit-format=table

注意 composer install 命令默认不启用 audit, 可以通过配置 --audit 选项启用:

composer install --audit --audit-format=plain

命令,包及选项的补全

Composer 2.4 中扩展了命令补全的支持,以支持 Composer 命令、选项甚至包名称的补全。在内部,Composer 的完成依赖于 Symfony Console 库。目前,支持仅限于 Bash。

要配置 Composer 补全功能,请运行不带任何参数 composer completion 命令。在支持的平台上,Composer 打印一个completion 脚本,该脚本在 shell 加载 completion 脚本的目录中。此设置还需要安装 bash completion 包:

Debian/Ubuntu 类似的系统

sudo apt install bash-completion
composer completion | tee /etc/bash_completion.d/composer

Fedora/RHEL

sudo dnf install bash-completion
composer completion | tee /etc/bash_completion.d/composer

Windows/MacOS
将 composer completion 命令的脚本输出添加到适当的位置(例如 ~/.bashrc 加载的文件),当 Bash 初始化时,将在该位置加载 completion 脚本。

 

PHP