ibrostudio / laravel-multenv
管理多个Laravel环境变量文件
1.1.0
2023-06-12 13:44 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
- vlucas/phpdotenv: ^5.5
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
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)。请参阅许可证文件以获取更多信息。