stefk / incenteev-parameters
incenteev/composer-parameter-handler 的临时分支,允许对交互式参数进行过滤
Requires
- php: >=5.3.3
- symfony/yaml: ~2.3|~3.0
Requires (Dev)
- composer/composer: 1.0.*@dev
- phpspec/prophecy-phpunit: ~1.0
- symfony/filesystem: ~2.2
This package is not auto-updated.
Last update: 2024-09-14 18:28:44 UTC
README
此工具允许您在运行 composer 安装或更新时管理要忽略的参数。它将参数存储在单个顶层键(默认名为 parameters)下的 Yaml 文件中时工作。其他键将保持不变。
用法
在您的根 composer.json 文件中添加以下内容
{
"require": {
"incenteev/composer-parameter-handler": "~2.0"
},
"scripts": {
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters"
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters"
]
},
"extra": {
"incenteev-parameters": {
"file": "app/config/parameters.yml"
}
}
}
然后,composer 脚本将创建或更新 app/config/parameters.yml,以匹配 dist 文件 app/config/parameters.yml.dist 的结构,并通过询问您缺失的参数来完成。
默认情况下,假定 dist 文件与参数文件位于同一位置,并附加 .dist 后缀。这可以在配置中更改
{
"extra": {
"incenteev-parameters": {
"file": "app/config/parameters.yml",
"dist-file": "some/other/folder/to/other/parameters/file/parameters.yml.dist"
}
}
}
脚本处理程序将交互式地询问参数文件中缺失的参数,使用 dist 文件中的值作为默认值。所有提示的值都被解析为内联 Yaml,以便您可以轻松定义 true、false、null 或数字。如果 composer 以非交互式模式运行,则使用 dist 文件中的值用于缺失的参数。
警告:此参数处理程序将覆盖您的参数.yml 文件中的任何注释或空格,所以请谨慎处理。如果您想为参数文件提供格式和注释,应在 dist 版本中完成。
保留过时的参数
警告:此脚本会从 parameters.yml 中删除过时的参数,这些参数不在 parameters.yml.dist 中。如果您需要保留过时的参数,可以在配置中使用 keep-outdated 参数。
{
"extra": {
"incenteev-parameters": {
"keep-outdated": true
}
}
}
使用不同的顶层键
脚本处理程序在您的 dist 文件中寻找 parameters 键。您可以通过配置中的 parameter-key 参数来更改此设置
{
"extra": {
"incenteev-parameters": {
"parameter-key": "config"
}
}
}
使用环境变量设置参数
对于您的生产环境,在部署时可能无法使用交互式提示。在这种情况下,您可以通过环境变量提供参数,这可以通过提供环境变量和它们应填充的参数之间的映射来实现。
{
"extra": {
"incenteev-parameters": {
"env-map": {
"my_first_param": "MY_FIRST_PARAM",
"my_second_param": "MY_SECOND_PARAM"
}
}
}
}
如果设置了环境变量,其值将始终替换现有参数文件中设置的值。
由于环境变量只能是字符串,因此它们也被解析为内联 Yaml 值,以便您可以轻松指定 null、false、true 或数字。
过滤交互式参数
默认情况下,交互式提示会要求输入参数文件中缺失的每个参数。如果您想将此行为限制为特定参数集,并在其他情况下使用处理程序的默认值,您可以通过指定 interactive-keys 属性中的白名单来实现。
{
"extra": {
"incenteev-parameters": {
"interactive-keys": [
"param_1",
"param_3",
"param_8"
]
}
}
}
重命名参数
如果您正在重命名参数,新键将根据常规程序设置(如果可能则提示,使用环境变量,使用默认值)。为了使参数处理程序使用(已过时)参数的值,请指定重命名映射
{
"extra": {
"incenteev-parameters": {
"rename-map": {
"new_param_1": "old_param_1",
"new_param_2": "old_param_2"
}
}
}
}
这将创建新的参数 new_param_1 和 new_param_2,同时分别使用 old_param_1 和 old_param_2 的值。除非您也从 dist 版本中删除了旧参数,否则它不会删除旧参数。
如果旧参数不再存在(可能是因为它已经被重命名并删除),则不会覆盖任何参数。一旦参数被重命名,您不需要从重命名映射中删除过时的参数。
管理多个忽略文件
参数处理器可以管理多个被忽略的文件。要使用此功能,需要确保incenteev-parameters插件中包含一个包含多个配置的JSON数组,而不是单个配置对象
{
"extra": {
"incenteev-parameters": [
{
"file": "app/config/parameters.yml",
"env-map": {}
},
{
"file": "app/config/databases.yml",
"dist-file": "app/config/databases.dist.yml",
"parameter-key": "config"
}
]
}
}