vsouz4/companienv

.env 文件伴侣

0.0.12 2020-04-17 22:18 UTC

This package is auto-updated.

Last update: 2024-09-18 07:54:36 UTC


README

您的 .env 文件伴侣。现在每个人都了解 12 factor环境变量。许多框架,如 Symfony 使用 .env 文件 来配置应用程序,但我们没有帮助用户完成他们的本地 .env 文件的工具。

Companienv 将帮助您管理 .env 文件,从您的代码仓库中的参考 .env.dist 版本。Companienv 可以

使用方法

  1. sroze/companienv 作为您的项目依赖项要求
composer req sroze/companienv
  1. 运行您的伴侣
vendor/bin/companienv

Composer 自动化

您可以通过配置 composer.json 文件中的脚本,在 composer installcomposer 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();