dbtlr / php-env-builder
一个帮助自动化构建 .env 文件的 PHP 库。
v1.0.0
2018-08-17 14:17 UTC
Requires
- php: ^7.1
- composer/composer: ^1.7
- league/climate: ^3.4
- vlucas/phpdotenv: ^2.5
Requires (Dev)
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^1.1
- phpunit/phpunit: ^7.3
- squizlabs/php_codesniffer: ^3.3
This package is not auto-updated.
Last update: 2024-09-15 05:05:43 UTC
README
使从命令行构建 .env 文件变得简单。
为了在您的开发工作流程中加载和使用 .env 文件,我强烈建议查看 vlucas/phpdotenv 包,它有助于抽象化加载环境变量的过程。这个库旨在帮助您构建一个本地 .env 库,您可以将其添加到 .gitignore 文件中,而不需要大多数人添加的额外的 .env.example 文件,该文件通常用于说明如何构建它。
安装
安装此库的推荐方法是使用 Composer。
从您的项目根目录运行以下命令
$ composer require --dev dbtlr/php-env-builder
作为 Composer 脚本的用法
由于 Composer 提供了自己的与控制台 IO 交互的方式,因此在这种情况下,extra.php-env-builder 配置是设置您的问题和变量名的正确方法。
为了在运行 composer install 或 composer update 时构建 .env 文件,您应该提供类似以下的配置
{
"scripts": {
"build-env": "Dbtlr\\PHPEnvBuilder\\ComposerScriptRunner::build",
"post-install-cmd": "@build-env",
"post-update-cmd": "@build-env"
},
"extra": {
"php-env-builder": {
"envFile": ".env",
"questions": [
{
"name": "MYSQL_HOST",
"prompt": "What is the hostname for the MySQL server?",
"default": "127.0.0.1",
"required": true
},
{
"name": "MYSQL_PORT",
"prompt": "The port for the MySQL server?",
"default": "3306",
"required": true
},
{
"name": "MYSQL_USER",
"prompt": "What is the MySQL user?",
"default": "app",
"required": true
},
{
"name": "MYSQL_PASSWORD",
"prompt": "What is the MySQL password?",
"default": "app-password",
"required": true
}
]
}
}
}
所有 extra.php-env-builder 选项
- questions - 默认:[]
(必需)// 包含至少name和prompt元素的问答数组。 - envFile - 默认:
.env// 绝对路径或相对于package.json文件的路径。 - clobber - 默认:
false// 构建时是否覆盖现有的 .env 文件? - loadEnv - 默认:
false// 如果正在覆盖现有文件,是否会将其加载以提供默认值? - verbose - 默认:
false// 额外输出
通用用法
如果您想自己编写脚本,语法本身相当简单。
注意:这是一个不太常见的用例,因为需要由 Composer 提供控制台 IO,以便它可以在 Composer 脚本内部接受输入。这可能对您从 Makefile 或 npm run postinstall 运行此脚本很有用。
require_once __DIR__ . "/vendor/autoload.php"; $config = [ 'verbose' => true, 'loadEnv' => true, ]; $builder = new \Dbtlr\PHPEnvBuilder\Builder('/path/to/.env', $config); $builder->ask( 'name', // ENV variable name 'What is your name?' // Command prompt '', // Default answer true // Is required? ); $builder->run(); // Run the builder and return the answers. $builder->write(); // Write the answers to the file.
运行测试吗?
所有测试都使用 PHPUnit 运行。请确保您已安装至少 PHP 7.1,以及 Composer。
要运行测试,只需运行
composer install
composer test