paysera / fork-sroze-companienv
.env文件伴侣
Requires
- php: >=7.0
- jackiedo/dotenv-editor: ~1.0
- symfony/console: ~3.0 || ~4.0 || ~5.0
- symfony/dotenv: ~3.4 || ~4.0 || ~5.0
- symfony/process: ~3.0 || ~4.0 || ~5.0
Requires (Dev)
- behat/behat: ^3.4
- composer/composer: 1.0.*@dev || 2.0.9
- phpspec/phpspec: ^6.1
This package is auto-updated.
Last update: 2024-09-06 13:05:17 UTC
README
您的.env文件伴侣。现在大家都知道12 factor和环境变量了。许多框架,如Symfony使用.env文件来配置应用程序,但我们没有帮助用户完成本地.env文件的工具。
Companienv将帮助您管理从代码仓库中的参考.env.dist版本的.env文件。Companienv可以:
- 读取并填充默认值
- 识别并仅询问缺失的变量
- 在满足某些条件的情况下才询问变量only if matching some conditions
- 传播文件(从其他地方复制文件)
- 生成公钥/私钥RSA密钥
- 生成SSL证书
- 更多功能,通过您自己的扩展
使用方法
- 将
sroze/companienv作为项目依赖项
composer req sroze/companienv
- 运行您的伴侣
vendor/bin/companienv
Composer自动化
您可以通过配置composer.json文件中的脚本,在composer install或composer update命令之后自动运行Companienv
{
"scripts": {
"post-install-cmd": [
"Companienv\\Composer\\ScriptHandler::run"
],
"post-update-cmd": [
"Companienv\\Composer\\ScriptHandler::run"
]
}
}
默认情况下,用作模板的文件是.env.dist,写入的文件是.env。您可以在composer.json文件中更改这些默认设置
{
"extra": {
"companienv-parameters": [
{
"file": ".env.foo",
"dist-file": ".env.foo.dist"
}
]
}
}
.env.dist文件
所有配置都直接在.env.dist文件中,以注释的形式。配置被分为几个块,这将有助于用户更好地理解配置。以下是Companienv的基础:
- 块。它们逻辑上将变量组合在一起。它们由一个标题(以双注释
##开始的行)和一个描述(每行直接下面的注释)定义 - 属性。由以
#+开始的行定义,一个属性与一个或多个变量相关联。这些属性是扩展的入口点。在上面的例子中,它表示JWT_*变量与RSA密钥对相关联,因此Companienv将自动为用户提供生成密钥对的机会。 - 注释。以
#~开始的行将被Companienv忽略。
.env.dist文件的示例
# .env.dist
## Welcome in the configuration of [my-project]
#
#~ Please run the `bin/start` command.
#~ These lines starting with `~` are not going to be displayed to the user
## GitHub
# In order to be able to login with GitHub, you need to create a GitHub application. To get access to the code
# repositories, you need to create a GitHub integration.
#
#+file-to-propagate(GITHUB_INTEGRATION_KEY_PATH)
#
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_INTEGRATION_ID=
GITHUB_INTEGRATION_KEY_PATH=
GITHUB_SECRET=
## Security
# We need sauce! Well, no, we need an SSL certificate.
#
#+rsa-pair(JWT_PRIVATE_KEY_PATH JWT_PUBLIC_KEY_PATH JWT_PRIVATE_KEY_PASS_PHRASE)
#
JWT_PRIVATE_KEY_PATH=/runtime/keys/jwt-private.pem
JWT_PUBLIC_KEY_PATH=/runtime/keys/jwt-public.pem
JWT_PRIVATE_KEY_PASS_PHRASE=
## Another block
# With its (optional) description
AND_OTHER_VARIABLES=
内置扩展
only-if扩展
如果某些变量禁用了一个特定的功能,您的.env文件中的一些块可能甚至不相关。
示例:如果INTERCOM_ENABLED的值为(当前或用户输入的)true,则仅请求INTERCOM_APPLICATION_ID变量。
## Support & Feedback
# If you would like to allow your users to get some support from you, give you some feedback and this
# sort of things, select the integrations you'd like.
#
#+only-if(INTERCOM_APPLICATION_ID):(INTERCOM_ENABLED=true)
#
INTERCOM_ENABLED=false
INTERCOM_APPLICATION_ID=none
file-to-propagate扩展
将询问现有文件的路径,并将其复制到参考中提到的目的地。
示例:这将要求用户输入现有文件的路径。它将此文件复制到项目根目录相对路径 /runtime/keys/firebase.json。
#+file-to-propagate(FIREBASE_SERVICE_ACCOUNT_PATH) FIREBASE_SERVICE_ACCOUNT_PATH=/runtime/keys/firebase.json
rsa-pair 扩展
如果公钥/私钥对不存在,Companienv 将为用户提供生成一个。
#+rsa-pair(JWT_PRIVATE_KEY_PATH JWT_PUBLIC_KEY_PATH JWT_PRIVATE_KEY_PASS_PHRASE) JWT_PRIVATE_KEY_PATH=/runtime/keys/jwt-private.pem JWT_PUBLIC_KEY_PATH=/runtime/keys/jwt-public.pem JWT_PRIVATE_KEY_PASS_PHRASE=
ssl-certificate-extension
类似于 RSA 密钥对:如果尚未存在,Companienv 将提供生成自签名 SSL 证书。
#+ssl-certificate(SSL_CERTIFICATE_PRIVATE_KEY_PATH SSL_CERTIFICATE_CERTIFICATE_PATH SSL_CERTIFICATE_DOMAIN_NAME) SSL_CERTIFICATE_PRIVATE_KEY_PATH=/runtime/keys/server.key SSL_CERTIFICATE_CERTIFICATE_PATH=/runtime/keys/server.crt SSL_CERTIFICATE_DOMAIN_NAME=
您自己的扩展
您可以使用 Companienv 轻松创建和使用您自己的扩展。为此,您需要用您的 PHP 文件启动 Companienv,并使用 Application 的 registerExtension 方法。
use Companienv\Application; use Companienv\Extension; $application = new Application($rootDirectory); $application->registerExtension(new class() implements Extension { // Implements the interface... }); $application->run();