zogxray / composer-parameter-handler
处理您的忽略参数文件
Requires
- php: >=5.3.3
- symfony/yaml: ~2.3|~4.0|^5.0
Requires (Dev)
- composer/composer: 1.0.*@dev
- phpspec/prophecy-phpunit: ~1.0
- symfony/filesystem: ~4.0.2
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
或数字。
重命名参数
如果您正在重命名参数,新键将根据常规程序设置(如果可能,提示,使用环境变量,使用默认值)。为了使参数处理器使用(已废弃的)参数的值,指定一个重命名映射
{ "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" } ] } }