yiisoft / composer-config-plugin
Composer 配置组装插件
Requires
- php: ^7.4|^8.0
- composer-plugin-api: ^1.0|^2.0
- ext-json: *
- composer/composer: ^1.0|^2.0
- opis/closure: 3.6.x-dev@dev
- riimu/kit-phpencoder: ^2.4
- yiisoft/files: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.4
- roave/infection-static-analysis-plugin: ^1.6
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.3
Suggests
- symfony/yaml: ^2.0 || ^3.0 || ^4.0 for YAML files support
- vlucas/phpdotenv: ^2.0 for `.env` files support
- dev-master / 1.0.x-dev
- 0.6.0
- 0.5.1
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-dependabot/composer/yiisoft/files-tw-2.0
- dev-dependabot/github_actions/actions/cache-3.0.1
- dev-dependabot/github_actions/actions/checkout-3
- dev-ga-builds-on-schedule
- dev-dependabot/github_actions/shivammathur/setup-php-2.11.0
This package is auto-updated.
Last update: 2022-08-06 05:27:29 UTC
README
Composer Config Plugin
Composer 配置组装插件。
⚠️ 该插件不再受支持,建议使用 yiisoft/config。
此 Composer 插件提供与 composer 包一起分发的配置的组装。它允许将使用包所需的配置直接放在包中,从而实现插件系统。包变成了一个包含代码和其配置的插件。
文档
如何工作?
- 扫描已安装包中的
config-plugin
额外选项在他们的composer.json
中。 - 加载
.env
文件以设置$_ENV
变量。 - 需要
constants
文件以设置常量。 - 需要
params
文件。 - 需要配置文件。
- 在早期步骤中收集的选项可以和应该用于后续步骤,例如
$_ENV
应用于常量和参数,反过来应应用于配置。 - 文件处理顺序对于实现预期行为至关重要:根包中的选项具有比包含包中的选项更高的优先级。在下面的 文件处理顺序 部分进行了描述。
- 收集的配置被写入
vendor/yiisoft/composer-config-plugin-output
目录中的 PHP 文件,并包含在需要时重新构建配置所需的信息。 - 然后组装好的配置可以准备好通过
require
加载到应用程序中。
安装
composer require "yiisoft/composer-config-plugin"
默认情况下,此插件支持 PHP 和 JSON 格式的配置。
要启用其他格式,需要
- vlucas/phpdotenv - 用于
.env
文件。 - symfony/yaml - 用于 YAML 文件,
.yml
和.yaml
。
用法
在 composer.json
中列出您的配置文件,如下所示
"extra": { "config-plugin-output-dir": "path/relative-to-composer-json", "config-plugin": { "envs": "db.env", "params": [ "config/params.php", "?config/params-local.php" ], "common": "config/common.php", "web": [ "$common", "config/web.php" "../src/Modules/*/config/web.php" ], "other": "config/other.php" } },
标记
-
?
- 标记可选文件。未标记该文件的文件不存在将导致异常。"params": [ "params.php", "?params-local.php" ]
如果找不到
params-local.php
,这是可以的,但如果找不到params.php
,则是不允许的。 -
*
- 表示通配符路径。这意味着可以通过通配符掩码匹配零个或多个匹配项。"web": [ "../src/Modules/*/config/web.php" ]
它将收集
config
文件夹中任何子文件夹中的src/Modules/
下的所有web.php
文件。 -
$
- 对另一个配置的引用。"params": [ "params.php", "?params-local.php" ], "params-console": [ "$params", "params-console.php" ], "params-web": [ "$params", "params-web.php" ]
输出文件
params-console.php
和params-web.php
将包含params.php
和params-local.php
。
请按照以下方式定义您的配置
<?php return [ 'components' => [ 'db' => [ 'class' => \my\Db::class, 'name' => $params['db.name'], 'password' => $params['db.password'], ], ], ];
一个特殊的变量 $params
从 params
配置中读取。
要在您的应用程序中加载组装好的配置,请使用 require
$config = require Yiisoft\Composer\Config\Builder::path('web');
使用子配置
在某些情况下,将配置的一部分提取到另一个文件中可能更方便。例如,我们想将数据库配置提取到 db.php
中。为此,将配置添加到 composer.json
"extra": { "config-plugin-output-dir": "path/relative-to-composer-json", "config-plugin": { "envs": "db.env", "params": [ "config/params.php", "?config/params-local.php" ], "common": "config/common.php", "web": [ "$common", "config/web.php" ], "other": "config/other.php", "db": "config/db.php" } },
创建 db.php
<?php return [ 'class' => \my\Db::class, 'name' => $params['db.name'], 'password' => $params['db.password'], ];
然后在配置中使用 Builder::require()
<?php use Yiisoft\Composer\Config\Builder; return [ 'components' => [ 'db' => Builder::require('db'), ], ];
刷新配置
插件使用 composer POST_AUTOLOAD_DUMP
事件,即 composer 在 install
、update
和 dump-autoload
命令时运行此插件。结果,配置在安装或更新包后即可使用。
当您对任何配置进行更改时,您可能希望手动重新组装配置。为此,请运行
composer dump-autoload
上述命令可以缩短为 composer du
。
如果您需要从您的应用程序中强制重新构建配置,您可以这样做
// Don't do it in production, assembling takes it's time if (getenv('APP_ENV') === 'dev') { Yiisoft\Composer\Config\Builder::rebuild(); }
文件处理顺序
配置文件按照正确的顺序进行处理,以实现预期的自然行为
- 外部包中的选项覆盖内部包中的选项。
- 插件尊重您在
composer.json
中列出的配置顺序。 - 不同类型的选项按以下顺序处理
- 来自
envs
的环境变量。 - 来自
constants
的常量。 - 来自
params
的参数。 - 配置最后处理。
- 来自
调试
有几个方法可以调试配置构建的内部结构。
- 通过运行,插件可以显示检测到的包依赖关系层次结构
composer dump-autoload --verbose
上述命令可以缩短为 composer du -v
。
- 您可以在默认的输出目录中看到组装好的配置,该目录为
vendor/yiisoft/composer-config-plugin-output
,并且可以通过composer.json
中的config-plugin-output-dir
附加选项进行配置。
已知问题
此插件将配置视为简单的 PHP 数组。不需要特定的结构或语义,也不期望处理。它是简单直接的,但我怀疑...关于错误和打字错误怎么办?我考虑添加与插件一起提供的配置验证规则。这将解决所有问题吗?
许可协议
本项目根据 BSD-3-Clause 许可协议发布。更多信息请参阅 此处。
版权所有 © 2016-2020,HiQDev (http://hiqdev.com/) 版权所有 © 2020,Yiisoft (https://yiiframework.cn/)