配置#

本章将介绍 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,可以是 sourcedistauto 之一。此选项允许您设置 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 选项一起指定。令牌必须具有 apiread_api 范围。更多信息也可以在 此处 找到

gitlab-protocol#

用于为软件包元数据的 source 值创建存储库 URL 时要强制使用的协议。githttp 之一。(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传递给updateinstallrequire来忽略它。不过,从长远来看,您应该安装所需的扩展,因为如果您现在忽略了一个扩展,而您一个月后添加的一个新包也需要它,您可能会在不知情的情况下在生产环境中引入问题。

如果您本地安装了扩展,但在生产环境中没有安装,您可能希望使用{"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的存储库元数据以及类型为svnfossilgithubbitbucket的 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,可以是truefalse"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更好的/更安全的替代方法。

存储库 | 运行时

发现错别字了吗?此文档中有什么错误? 分叉并编辑 它!