- process-timeout
- allow-plugins
- use-include-path
- preferred-install
- audit
- use-parent-dir
- store-auths
- github-protocols
- github-oauth
- gitlab-domains
- gitlab-oauth
- gitlab-token
- gitlab-protocol
- disable-tls
- secure-http
- bitbucket-oauth
- cafile
- capath
- http-basic
- bearer
- platform
- vendor-dir
- bin-dir
- data-dir
- cache-dir
- cache-files-dir
- cache-repo-dir
- cache-vcs-dir
- cache-files-ttl
- cache-files-maxsize
- cache-read-only
- bin-compat
- prepend-autoloader
- autoloader-suffix
- optimize-autoloader
- sort-packages
- classmap-authoritative
- apcu-autoloader
- github-domains
- github-expose-hostname
- use-github-api
- notify-on-install
- discard-changes
- archive-format
- archive-dir
- htaccess-protect
- lock
- platform-check
- secure-svn-domains
配置#
本章将介绍 composer.json
模式 中的 config
部分。
process-timeout#
进程执行的超时时间(秒),默认值为 300(5 分钟)。这是 git 克隆等进程在 Composer 假设它们已死之前可以运行的持续时间。如果您的连接速度很慢或供应商数量庞大,您可能需要将其设置为更高的值。
要在 scripts
下的自定义命令中禁用进程超时,可以使用一个静态帮助程序
{
"scripts": {
"test": [
"Composer\\Config::disableProcessTimeout",
"phpunit"
]
}
}
allow-plugins#
默认值为 {}
,不允许加载任何插件。
从 Composer 2.2.0 开始,allow-plugins
选项增加了一层安全性,允许您限制 Composer 插件在 Composer 运行期间能够执行代码。
当一个新的插件首次被激活,而该插件尚未列在配置选项中时,Composer 将打印一个警告。如果您以交互方式运行 Composer,它将提示您决定是否要执行插件。
使用此设置仅允许您信任的软件包执行代码。将其设置为一个对象,其中软件包名称模式作为键。值为 true 表示允许,false 表示不允许,同时抑制进一步的警告和提示。
{
"config": {
"allow-plugins": {
"third-party/required-plugin": true,
"my-organization/*": true,
"unnecessary/plugin": false
}
}
}
您还可以将配置选项本身设置为 false
以禁止所有插件,或设置为 true
以允许所有插件运行(不建议)。例如
{
"config": {
"allow-plugins": false
}
}
use-include-path#
默认值为 false
。如果为 true
,Composer 自动加载器还将在 PHP include 路径中查找类。
preferred-install#
默认值为 dist
,可以是 source
、dist
或 auto
之一。此选项允许您设置 Composer 优先使用的安装方法。可以是具有软件包名称模式作为键的可选对象,以便更精细地控制安装偏好。
{
"config": {
"preferred-install": {
"my-organization/stable-package": "dist",
"my-organization/*": "source",
"partner-organization/*": "auto",
"*": "dist"
}
}
}
source
表示 Composer 将从其source
(如果有)安装软件包。这通常是软件包使用的版本控制系统的 git 克隆或等效检出。如果您想对项目进行错误修复并直接获得依赖项的本地 git 克隆,这很有用。auto
是传统行为,其中 Composer 自动对开发版本使用source
,对其他版本使用dist
。dist
(从 Composer 2.1 开始的默认值)表示 Composer 从dist
安装,如果可能的话。这通常是 zip 文件下载,比克隆整个存储库更快。
注意:顺序很重要。更具体的模式应该比更宽松的模式更早。当在全局配置和软件包配置中混合字符串表示法和哈希配置时,字符串表示法将转换为
*
软件包模式。
audit#
安全审计配置选项
ignore#
报告但允许 audit 命令通过的咨询 ID、远程 ID 或 CVE ID 列表。
{
"config": {
"audit": {
"ignore": {
"CVE-1234": "The affected component is not in use.",
"GHSA-xx": "The security fix was applied as a patch.",
"PKSA-yy": "Due to mitigations in place the update can be delayed."
}
}
}
}
或
{
"config": {
"audit": {
"ignore": ["CVE-1234", "GHSA-xx", "PKSA-yy"]
}
}
}
abandoned#
在 Composer 2.6 中默认值为 report
,从 Composer 2.7 开始默认值为 fail
。定义 audit 命令是否报告废弃的软件包,它有三个可能的值
ignore
表示 audit 命令根本不考虑废弃的软件包。report
表示废弃的软件包被报告为错误,但不会导致命令以非零代码退出。fail
表示废弃的软件包将导致审计失败,并以非零代码退出。
{
"config": {
"audit": {
"abandoned": "report"
}
}
}
从 Composer 2.7 开始,该选项可以通过 COMPOSER_AUDIT_ABANDONED
环境变量覆盖。
use-parent-dir#
当在没有 composer.json 的目录中运行 Composer 时,如果在上面的目录中有一个 composer.json,Composer 默认会询问您是否要使用该目录的 composer.json。
如果您始终想对该提示回答 yes,则可以将此配置值设置为 true
。要永远不被提示,请将其设置为 false
。默认值为 "prompt"
。
注意:此配置必须设置在您的全局用户范围配置中才能生效。例如,使用
php composer.phar config --global use-parent-dir true
来设置它。
store-auths#
在提示进行身份验证后要执行的操作,以下之一:true
(始终存储)、false
(不存储)和 "prompt"
(每次都询问),默认值为 "prompt"
。
github-protocols#
默认值为 ["https", "ssh", "git"]
。从 github.com 克隆时要使用的协议列表,按优先级排序。默认情况下 git
存在,但只有在禁用 secure-http 时才会存在,因为 git 协议未加密。如果您希望您的源远程推送 URL 使用 https 而不是 ssh ([email protected]:...
),则将协议列表设置为仅 ["https"]
,Composer 将停止将推送 URL 覆盖为 ssh URL。
github-oauth#
域名和 OAuth 密钥列表。例如,使用 {"github.com": "oauthtoken"}
作为此选项的值将使用 oauthtoken
来访问 github 上的私有存储库,并绕过其 API 的基于 IP 的低速率限制。Composer 可能会在需要时提示输入凭据,但也可以手动设置。阅读有关如何获取 GitHub OAuth 令牌和 CLI 语法的更多信息 此处。
gitlab-domains#
默认值为 ["gitlab.com"]
。GitLab 服务器域名的列表。如果您使用 gitlab
存储库类型,则会使用它。
gitlab-oauth#
域名和 OAuth 密钥列表。例如,使用 {"gitlab.com": "oauthtoken"}
作为此选项的值将使用 oauthtoken
来访问 gitlab 上的私有存储库。请注意:如果软件包未托管在 gitlab.com 上,则域名也必须与 gitlab-domains
选项一起指定。更多信息也可以在 此处 找到
gitlab-token#
域名和私有令牌列表。私有令牌可以是简单的字符串,也可以是包含用户名和令牌的数组。例如,使用 {"gitlab.com": "privatetoken"}
作为此选项的值将使用 privatetoken
来访问 gitlab 上的私有存储库。使用 {"gitlab.com": {"username": "gitlabuser", "token": "privatetoken"}}
将同时使用用户名和令牌来实现 gitlab 部署令牌功能 (https://docs.gitlab.com/ee/user/project/deploy_tokens/) 请注意:如果软件包未托管在 gitlab.com 上,则域名也必须与 gitlab-domains
选项一起指定。令牌必须具有 api
或 read_api
范围。更多信息也可以在 此处 找到
gitlab-protocol#
用于为软件包元数据的 source
值创建存储库 URL 时要强制使用的协议。git
或 http
之一。(https
被视为 http
的同义词。)在使用引用私有存储库的项目时很有用,这些存储库将在 GitLab CI 作业中使用 GitLab CI_JOB_TOKEN 通过 HTTP 基本身份验证进行克隆。默认情况下,Composer 会为私有存储库生成 git-over-SSH URL,而为公共存储库生成 HTTP(S) URL。
disable-tls#
默认值为 false
。如果设置为 true,所有 HTTPS URL 将尝试使用 HTTP 而不是执行网络级加密。启用此功能存在安全风险,不建议这样做。更好的方法是在 php.ini 中启用 php_openssl 扩展。启用此选项将隐式禁用 secure-http
选项。
secure-http#
默认值为 true
。如果设置为 true,则仅允许通过 Composer 下载 HTTPS URL。如果您确实绝对需要对某些内容进行 HTTP 访问,则可以禁用它,但使用 Let's Encrypt 获取免费 SSL 证书通常是更好的选择。
bitbucket-oauth#
域名和消费者列表。例如,使用 {"bitbucket.org": {"consumer-key": "myKey", "consumer-secret": "mySecret"}}
。阅读更多信息 此处。
cafile#
本地文件系统上证书颁发机构文件的路径。在 PHP 5.6+ 中,您应该通过 php.ini 中的 openssl.cafile 来设置它,尽管 PHP 5.6+ 应该能够自动检测您的系统 CA 文件。
capath#
如果未指定 cafile 或未在其中找到证书,则会搜索 capath 指向的目录以查找合适的证书。capath 必须是经过正确散列的证书目录。
http-basic#
域名和用户名/密码列表,用于对它们进行身份验证。例如,使用 {"example.org": {"username": "alice", "password": "foo"}}
作为此选项的值将允许 Composer 对 example.org 进行身份验证。更多信息可以在 此处 找到。
bearer#
域名和令牌列表,用于对它们进行身份验证。例如,使用 {"example.org": "foo"}
作为此选项的值将允许 Composer 使用 Authorization: Bearer foo
标头对 example.org 进行身份验证。
platform#
允许您伪造平台软件包(PHP 和扩展),以便您可以模拟生产环境或在配置中定义您的目标平台。例如:{"php": "7.0.3", "ext-something": "4.0.3"}
。
这将确保无论您在本地运行的实际 PHP 版本如何,都不会安装需要 PHP 7.0.3 以上版本的任何软件包。但是,这也意味着依赖项不再被正确检查,如果您运行 PHP 5.6,它将正常安装,因为它假定为 7.0.3,但在运行时会失败。这也意味着如果指定了 {"php":"7.4"}
;不会使用任何将 7.4.1
定义为最低版本的软件包。
因此,如果您使用它,建议,也更安全,在您的部署策略中也运行 check-platform-reqs
命令。
如果依赖项需要一些您本地没有安装的扩展,您可以通过将--ignore-platform-req=ext-foo
传递给update
、install
或require
来忽略它。不过,从长远来看,您应该安装所需的扩展,因为如果您现在忽略了一个扩展,而您一个月后添加的一个新包也需要它,您可能会在不知情的情况下在生产环境中引入问题。
如果您本地安装了扩展,但在生产环境中没有安装,您可能希望使用{"ext-foo": false}
从 Composer 中人工隐藏它。
vendor-dir#
默认为vendor
。如果您需要,可以将依赖项安装到不同的目录中。$HOME
和~
将在vendor-dir和下面所有*-dir
选项中被替换为您的主目录路径。
bin-dir#
默认为vendor/bin
。如果项目包含二进制文件,它们将被符号链接到此目录中。
data-dir#
在 Windows 上默认为C:\Users\<user>\AppData\Roaming\Composer
,在遵循 XDG Base Directory 规范的 unix 系统上默认为$XDG_DATA_HOME/composer
,在其他 unix 系统上默认为$COMPOSER_HOME
。现在它仅用于存储过去的 composer.phar 文件,以便能够回滚到旧版本。另请参见 COMPOSER_HOME。
cache-dir#
在 Windows 上默认为C:\Users\<user>\AppData\Local\Composer
,在 macOS 上默认为/Users/<user>/Library/Caches/composer
,在遵循 XDG Base Directory 规范的 unix 系统上默认为$XDG_CACHE_HOME/composer
,在其他 unix 系统上默认为$COMPOSER_HOME/cache
。存储 Composer 使用的所有缓存。另请参见 COMPOSER_HOME。
cache-files-dir#
默认为$cache-dir/files
。存储包的 zip 归档文件。
cache-repo-dir#
默认为$cache-dir/repo
。存储类型为composer
的存储库元数据以及类型为svn
、fossil
、github
和bitbucket
的 VCS 存储库。
cache-vcs-dir#
默认为$cache-dir/vcs
。存储 VCS 克隆,用于加载类型为git
/hg
的 VCS 存储库元数据,并加快安装速度。
cache-files-ttl#
默认为15552000
(6 个月)。Composer 会缓存它下载的所有 dist(zip、tar、...)包。默认情况下,这些包在 6 个月未使用后会被清除。此选项允许您调整此持续时间(以秒为单位)或通过将其设置为 0 来完全禁用它。
cache-files-maxsize#
默认为300MiB
。Composer 会缓存它下载的所有 dist(zip、tar、...)包。当定期运行垃圾回收时,这是缓存能够使用的最大大小。较旧的(使用较少)文件将首先被删除,直到缓存适合为止。
cache-read-only#
默认为false
。是否以只读模式使用 Composer 缓存。
bin-compat#
默认为auto
。确定要安装的二进制文件的兼容性。如果为auto
,则 Composer 仅在 Windows 或 WSL 上安装 .bat 代理文件。如果设置为full
,则将为每个二进制文件安装 Windows 的 .bat 文件和基于 Unix 的操作系统的脚本。这主要在您在 Linux VM 中运行 Composer 但仍希望.bat
代理可用于 Windows 主机操作系统时有用。如果设置为proxy
,Composer 将仅创建 bash/Unix 样式代理文件,即使在 Windows/WSL 上也不会创建 .bat 文件。
prepend-autoloader#
默认为true
。如果为false
,Composer 自动加载器将不会被预先附加到现有的自动加载器。有时需要这样做才能解决与其他自动加载器的互操作性问题。
autoloader-suffix#
默认为null
。当设置为非空字符串时,此值将用作生成的 Composer 自动加载器的后缀。如果设置为null
,则将使用composer.lock
文件中可用的content-hash
值;否则,将生成一个随机后缀。
optimize-autoloader#
默认为false
。如果为true
,则在转储自动加载器时始终优化。
sort-packages#
默认为false
。如果为true
,则require
命令在添加新包时会按名称对composer.json
中的包进行排序。
classmap-authoritative#
默认为false
。如果为true
,则 Composer 自动加载器将仅从类映射中加载类。意味着optimize-autoloader
。
apcu-autoloader#
默认为false
。如果为true
,则 Composer 自动加载器将检查 APCu,并在启用扩展时使用它来缓存已找到/未找到的类。
github-domains#
默认为["github.com"]
。在 github 模式下使用的域列表。这用于 GitHub Enterprise 设置。
github-expose-hostname#
默认为true
。如果为false
,则创建的用于访问 github API 的 OAuth 令牌将包含日期而不是机器主机名。
use-github-api#
默认为true
。类似于特定存储库上的no-api
键,将use-github-api
设置为false
将定义所有 GitHub 存储库的全局行为,以克隆存储库,就像使用任何其他 git 存储库一样,而不是使用 GitHub API。但与直接使用git
驱动程序不同,Composer 仍将尝试使用 GitHub 的 zip 文件。
notify-on-install#
默认为true
。Composer 允许存储库定义通知 URL,以便它们在每次从该存储库安装包时收到通知。此选项允许您禁用该行为。
discard-changes#
默认为false
,可以是true
、false
或"stash"
。此选项允许您在非交互模式下设置处理脏更新的默认样式。true
将始终丢弃 vendors 中的更改,而"stash"
将尝试存储并重新应用更改。如果您倾向于修改 vendors,请在 CI 服务器或部署脚本中使用此选项。
archive-format#
默认为tar
。覆盖 archive 命令使用的默认格式。
archive-dir#
默认为.
。archive 命令创建的归档文件的默认目标。
示例
{
"config": {
"archive-dir": "/home/user/.composer/repo"
}
}
htaccess-protect#
默认为true
。如果设置为false
,则 Composer 将不会在 Composer 主目录、缓存和数据目录中创建.htaccess
文件。
lock#
默认为true
。如果设置为false
,则 Composer 将不会创建composer.lock
文件,并且如果存在将忽略它。
platform-check#
默认为php-only
,它只检查 PHP 版本。设置为true
还将检查扩展的存在。如果设置为false
,Composer 将不会创建并要求platform_check.php
文件作为自动加载器引导程序的一部分。
secure-svn-domains#
默认为[]
。列出应被信任/标记为使用安全 Subversion/SVN 传输的域。默认情况下,svn:// 协议被视为不安全,并将抛出异常,但您可以将此配置选项设置为["example.org"]
以允许在该主机名上使用 svn URL。这比完全禁用secure-http
更好的/更安全的替代方法。
发现错别字了吗?此文档中有什么错误? 分叉并编辑 它!