ibrostudio/laravel-multenv

管理多个Laravel环境变量文件

1.1.0 2023-06-12 13:44 UTC

This package is auto-updated.

Last update: 2024-09-12 16:23:02 UTC


README

使用laravel管理多个.env文件,通过自动加密将.env文件嵌入和分享到仓库中。

安装

您可以通过composer安装此包

composer require ibrostudio/laravel-multenv

使用以下命令发布配置文件

php artisan vendor:publish --tag="multenv-config"

这是已发布配置文件的内容

return [
    '.env.primary' => ['encrypt' => true],
    '.env.custom' => ['encrypt' => false],
];

您定义要管理的.env文件

  • 一个主.env文件,包含所有变量
  • 然后,您可以添加一个(或多个)条目来覆盖变量

基本用法

在项目根目录中,创建config中定义的所有文件,并用变量填充它们。

将它们添加到.gitignore文件中

.env.primary
.env.custom

或者

.env*

然后运行

php artisan multenv:merge

它生成最终的.env文件,合并所有配置.env文件中的变量。

加密

您可以将某些.env文件加密以安全地嵌入到您的repo中。

生成加密密钥

php artisan multenv:key

将其添加到.gitignore文件中

.multenv

不要将.multenv密钥提交到您的repo中,这是一个安全风险。

如果您在repo上与人合作,请手动共享密钥,每个人的密钥必须相同。

配置要加密的文件

在config/multenv.php中,通过将设置设为true来定义要加密的每个文件

'.env.primary' => ['encrypt' => true]

加密

php artisan multenv:encrypt

如果您在.gitignore中使用.env,请添加以下内容

.env*
!.env.*.encrypted

解密

php artisan multenv:decrypt

自动加密

您可以定义一些git钩子来自动化这些过程

1. 合并、加密和提交

在.git/hooks中创建(或修改)一个名为pre-push的文件,并添加以下内容

#!/bin/sh

echo "---- PRE PUSH ----"
php artisan multenv:encrypt
git add .env.*.encrypted
git commit -m 'Auto embed encrypted env files'
echo "--- PRE PUSH END ---"

使其可执行

chmod +x pre-push

2. 解密和合并

在.git/hooks中创建(或修改)一个名为post-merge的文件,并添加以下内容

#!/bin/sh

echo "---- POST MERGE ----"
php artisan multenv:decrypt
php artisan multenv:merge
echo "--- POST MERGE END ---"

使其可执行

chmod +x post-merge

不同分支的env文件

按照以下方式修改配置,添加一个模式条目

return [
    '.env.primary' => ['encrypt' => true, 'pattern' => 'branch-*'],
    '.env.custom' => ['encrypt' => false],
];

然后,在项目根目录中,创建基于模式的env分支文件。

示例:.env.branch-main

用变量填充它们,并使用之前描述的方法。

如果您需要在分支之间保持安全,为每个分支使用不同的multenv密钥。

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。