cube / composer-dist-installer
在项目设置时自动安装 .dist 模板文件。与任何 PHP 框架或包兼容。
Requires
- php: >=5.4
Requires (Dev)
- composer/composer: @dev
- mockery/mockery: ^0.9.4
- phpunit/phpunit: >=4.2
This package is not auto-updated.
Last update: 2022-05-02 15:20:38 UTC
README
| 类型 | 状态 |
|---|---|
| 构建 | |
| Packagist |
在项目中运行 composer install 时自动安装 .dist 文件,并可选地使用非常简单直观的模板语法填充数据。
该项目旨在与框架无关。您只需要使用 Composer 来管理项目的依赖项。
安装
只需通过运行以下命令使用 Composer 安装:
composer require cube/composer-dist-installer:~1.0@beta
使用方法
将以下内容添加到您的根目录 composer.json 文件中
{
"scripts": {
"post-install-cmd": [
"Cube\\ComposerDistInstaller\\Bootstrap::install"
]
},
"extra": {
"dist-installer-params": {
"file": "config/autoload/database.config.php.dist"
}
}
}
然后,将根据位于 config/autoload/database.config.php.dist 中的模板以及询问您在 .dist 文件中请求的任何参数创建 config/autoload/database.config.php 文件。
默认情况下,假定 dist 文件与参数文件在同一位置,后缀为 .dist。这可以在配置中更改
{
"extra": {
"dist-installer-params": {
"file": "config/autoload/database.config.php",
"dist-file": "some/other/folder/file/database.dist"
}
}
}
脚本处理器将通过交互式方式询问您在 .dist 文件中请求的参数,并使用可选的默认值。
如果以非交互模式运行 composer,则将使用默认值来处理缺少的参数。
警告:如果目标中已存在配置文件,您将收到提示,询问是否要覆盖它。如果您选择覆盖,则将在配置文件旁边创建一个备份文件。您负责手动合并新文件和旧文件之间的差异 - 然后删除旧文件。
多个文件
您可以使用以下替代语法指定要处理的多个文件
{
"extra": {
"dist-installer-params": [
{
"file": "config/autoload/database.config.php",
"dist-file": "some/other/folder/file/database.dist"
},
{
"file": "config/autoload/session.config.php",
"dist-file": "some/other/folder/file/session.dist"
}
]
}
}
模板语法
在将模板文件(.dist 文件)复制到最终目的地之前,处理器将查找您可能已在模板中包含的任何参数,并询问其值。
参数的语法是 {{QUESTION|DEFAULT}}。
QUESTION:应包含整个问题,包括问号等。可选地在字符串中包含[]以指定默认值在问题中的位置(否则将没有指示默认值存在)。DEFAULT:指定默认值。要使用环境变量作为默认值,请使用以下语法:=ENV[VARIABLE_NAME]
例如,考虑以下模板
<?php return array( 'doctrine' => array( 'connection' => array( // default connection name 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => '{{Database host []?|localhost}}', 'port' => '{{Database port []?|3306}}', 'user' => '{{Database user []?|=ENV[USER]}}', 'password' => '{{Database password?}}', 'dbname' => '{{Database name?}}', ) ), ) ), );
在安装项目时,Composer 将询问您所有信息并在必要时使用默认值。提示将如下所示
$ composer install
# .... some composer output
Creating the config/autoload/database.config.php file
Destination file already exists, overwrite (y/n)? y
A copy of the old configuration file was saved to config/autoload/database.config.php.old
Database host [localhost]? test.db.acme.be
Database port [3306]? # <enter> to accept the default
Database user [staging]? # this default value was pulled from
# the "USER" environment variable.
Database password? 1234test
Database name? stage
最终的文件将如下所示
<?php return array( 'doctrine' => array( 'connection' => array( // default connection name 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'test.db.acme.be', 'port' => '3306', 'user' => 'staging', 'password' => '1234test', 'dbname' => 'stage', ) ), ) ), );
环境变量
可以使用环境值来设置参数的默认值。其语法为 {{Question|=ENV[VARIABLE_NAME]}},其中 VARIABLE_NAME 是提供默认值的环境值。
在上面的示例中,以下行使用了USER环境变量作为默认值
参数的多个默认值
也可以有多个默认值(例如 {{QUESTION|DEFAULT1|DEFAULT2}}。如果想要使用环境变量作为默认值,并且当环境变量未设置时回退到硬编码的默认值,这可能会很有用。
因此,你可以在你的dis文件中写入以下内容
myVar: {{"My var []?|=ENV[MY_VAR]|my_default_var}}
如果MY_VAR环境变量设置为'foobar',问题将是
My var [foobar]?
如果MY_VAR环境变量未设置,问题将是
My var [my_default_var]?
非交互模式
当使用--no-interaction选项启动composer时,将应用默认值。这对于部署过程是一个很好的选项,如果你在你的dist文件中使用了环境变量。
授权协议
请参阅此同一软件包中的LICENSE.txt文件。
鸣谢
版权所有 (c) 2015 by Cu.be Solutions
作者
- 加布里埃尔·索莫萨 (gabriel.somoza@cu.be)