worksome / envy
自动保持您的.env文件同步。
Requires
- php: ^8.2
- illuminate/contracts: ^10.0 || ^11.0
- nikic/php-parser: ^4.19.1 || ^5.0.2
- nunomaduro/termwind: ^1.15 || ^2.0
- spatie/laravel-package-tools: ^1.16
- thecodingmachine/safe: ^2.4
Requires (Dev)
- larastan/larastan: ^2.6
- nunomaduro/collision: ^7.0 || ^8.1
- orchestra/testbench: ^8.0 || ^9.0
- pestphp/pest: ^2.33
- pestphp/pest-plugin-laravel: ^2.2
- worksome/coding-style: ^2.8
README
自动化同步环境文件。
你有多少次将新开发者加入团队,却发现因为你的项目的.env.example
文件过时而不得不花费大量时间调试?如果你和我们一样,那肯定很多。如果有一种方法可以确保环境文件保持最新状态,那岂不是很好?这就是我们创建Envy的原因!
使用简单的Artisan命令,您可以将环境文件与项目配置同步,以保持一切新鲜。
安装
您可以通过composer安装此包
composer require worksome/envy --dev
我们建议发布我们的配置文件,这允许您根据项目需求调整Envy。您可以使用我们的安装命令来完成此操作
php artisan envy:install
就这样!现在您可以开始使用Envy了。
用法
Envy提供了两个命令:envy:sync
和 envy:prune
。让我们来看看如何使用它们。
php artisan envy:sync
此命令会遍历您项目的配置文件,查找对Laravel的env
函数的调用。找到所有调用后,它会与您配置的环境文件(默认为您的.env.example
)进行比较,以查找缺失条目。如果存在缺失条目,您可以选择:
- 将缺失的键添加到环境文件中
- 将缺失的键添加到Envy的排除列表中
有关配置环境文件、配置文件和排除的更多信息,请参阅配置文档。
envy:sync
命令提供了一些可能有用的选项。
--path
如果您想针对某个特定的环境文件运行同步命令,而不是配置的环境文件,您可以使用此选项通过路径传递指定环境文件的路径。
--dry
--dry
选项将阻止命令实际执行任何更新。这在您想将Envy作为CI检查的一部分运行而不实际进行更新时很有用。如果找到缺失条目,命令将失败,从而导致CI检查失败。
--force
如果您想自动更改配置的环境文件而不需要确认,您可以通过传递--force
选项。这在CI机器人中很有用,您想要自动化更改.env.example
文件,因为没有用户输入将被请求。
php artisan envy:prune
此命令将在您项目的配置环境文件中搜索(默认为您的.env.example
)无法在任何配置的配置文件中找到的条目。如果存在额外条目,您可以选择:
- 从环境文件中删除额外条目
- 将缺失的键添加到Envy的包含列表中
有关配置环境文件、配置文件和包含的更多信息,请参阅配置文档。
envy:prune
命令提供了一些可能有用的选项。
--path
如果您想针对某个特定的环境文件运行修剪命令,而不是配置的环境文件,您可以使用此选项通过路径传递指定环境文件的路径。
--dry
使用 --dry
选项可以防止命令实际修剪任何环境变量。如果你想在CI检查中运行Envy而不实际进行更新,这很有用。如果找到额外的条目,命令将失败,这将导致CI检查失败。
--force
如果您想自动更改配置的环境文件而不需要确认,您可以通过传递--force
选项。这在CI机器人中很有用,您想要自动化更改.env.example
文件,因为没有用户输入将被请求。
配置
你可以使用我们的 envy.php
配置文件自定义Envy以符合你项目的需求。以下是可用选项的概述。
environment_files
默认情况下,Envy 只会修改你的 .env.example
文件。如果你想要添加额外的 .env
文件,如 .env.testing
或 .env.dusk
,你可以将它们追加到这个数组中。
⚠️ 我们不推荐将你的
.env
文件添加到这个数组中,因为它可能引起不期望的副作用,尤其是在CI中。
config_files
默认情况下,Envy 会递归地扫描项目中 config
目录下的所有文件。对于大多数项目来说,这已经足够了。如果你的项目在配置文件(这是一种反模式)之外调用 env
,你应该将相关的文件或目录添加到这个数组中。
这也很有用,如果你使用了一个你没有发布其配置文件的包。你可以添加一个条目到这个数组中,指向 vendor
目录中的基本配置文件。
注意,如果你引用的是目录而不是文件,它将递归地包含该目录中的所有文件。
display_comments
某些配置键,如图所示,可能包含注释。如果你将 display_comments
设置为 true
,我们将配置注释转换为环境注释,并在将其插入到配置的环境文件时,将其放置在相关的环境变量上方。这在某些项目中有助于记住各种环境变量的用途。
display_location_hints
在合并配置文件时,我们会记录你调用 env
的文件和行。如果你将 display_location_hints
设置为 true
,我们将创建一个包含此位置信息的注释,并在将其插入到配置的环境文件时,将其放置在相关的环境变量上方。这在某些项目中有助于定位各种环境变量的使用。
display_default_values
在合并配置文件时,我们会记录在 env
调用中设置的任何默认参数。例如,给定对 env('APP_NAME', 'Laravel')
的调用,默认值将是 'Laravel'
。如果 display_default_values
设置为 true
,我们将插入默认值作为相关环境变量的值,更新你的配置环境文件。
出于明显的原因,我们只在复制默认值时插入标量(原始)类型。
⚠️ 如果你将
exclude_calls_with_defaults
设置为true
(这是默认值),此选项将没有效果,因为带有默认值的调用将被忽略。
exclude_calls_with_defaults
如果你复制了每个 env
调用,你的环境文件将很快变得难以阅读。为了缓解这种情况,我们提供了一个选项来忽略带有默认值的 env
调用。默认情况下,此选项已启用,但将其设置为 false
将允许Envy同步具有默认值的环境变量。
exclusions
这个数组是一个环境键集合,这些键不应该同步到您的环境文件中。默认情况下,我们包括所有不在首次创建新Laravel项目时创建的默认.env
文件中包含的Laravel环境变量。从该数组中删除值会导致它们在同步时被重新拾取。当然,如果您有希望忽略的自定义变量或由包提供的变量,您可以将它们添加到这里。
当运行php artisan envy:sync
时,如果您选择了添加到排除项
选项,此数组将根据该命令列出的环境变量进行更新。
💡您仍然可以手动将排除项中的键插入到您的
.env
文件中。我们不会移除它们。
包含
这个数组是我们永远不会从配置的环境文件中删除的环境键集合,即使我们无法在配置的配置文件中找到这些变量的引用。例如,对于Laravel Mix使用的JS变量,这可能很有用。
当运行php artisan envy:prune
时,如果您选择了添加到包含项
选项,此数组将根据该命令列出的环境变量进行更新。
高级
熟悉了Envy的基本知识后,您可能会发现这些高级功能很有用。
过滤器
有时,您可能需要一个比基本字符串更强大的方式来表示排除
和包含
列表中的项目。例如,想象一下,您想将所有以STRIPE_
开头的环境变量添加到排除列表中。而无需手动逐个插入,您可以使用Worksome\Envy\Support\Filters\Filter
类。
/** * Any environment variables that are added to exclusions will never be inserted * into .env files. Our defaults are based on the base Laravel config files. * Feel free to add or remove variables as required by your project needs. */ 'exclusions' => [ Filter::wildcard('STRIPE_*'), ],
现在,任何以STRIPE_
开头的环境变量在同步到配置的环境文件时都将自动被排除。我们还提供了Filter::regex
,这是一个更强大的过滤器,允许您使用您提供的正则表达式匹配环境变量。实际上,排除
和包含
列表将接受一个string
或任何实现了Worksome\Envy\Contracts\Filter
合约的类,因此您甚至可以自己实现过滤器,如果您喜欢这样做。
测试
我们自豪于我们的全面测试套件和严格的静态分析。您可以通过composer脚本来运行所有检查。
composer test
为了使贡献变得极其容易,我们还提供了一个docker-compose文件,该文件将启动一个包含所有必需依赖项的容器。假设您已安装docker,只需运行
docker-compose run --rm composer install # Only needed the first time docker-compose run --rm composer test # Run tests and static analysis
支持XDebug已经嵌入到Docker镜像中,您只需配置XDEBUG_MODE
环境变量
docker-compose run --rm -e XDEBUG_MODE=debug php
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
鸣谢
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件。