worksome/envy

自动保持您的.env文件同步。

资助包维护!
worksome

v1.3.0 2024-04-18 08:58 UTC

This package is auto-updated.

Last update: 2024-09-16 10:06:11 UTC


README

自动化同步环境文件。

GitHub Tests Action Status PHPStan

你有多少次将新开发者加入团队,却发现因为你的项目的.env.example文件过时而不得不花费大量时间调试?如果你和我们一样,那肯定很多。如果有一种方法可以确保环境文件保持最新状态,那岂不是很好?这就是我们创建Envy的原因!

使用简单的Artisan命令,您可以将环境文件与项目配置同步,以保持一切新鲜。

安装

您可以通过composer安装此包

composer require worksome/envy --dev

我们建议发布我们的配置文件,这允许您根据项目需求调整Envy。您可以使用我们的安装命令来完成此操作

php artisan envy:install

就这样!现在您可以开始使用Envy了。

用法

Envy提供了两个命令:envy:syncenvy:prune。让我们来看看如何使用它们。

php artisan envy:sync

CleanShot 2022-02-01 at 16 18 27@2x

此命令会遍历您项目的配置文件,查找对Laravel的env函数的调用。找到所有调用后,它会与您配置的环境文件(默认为您的.env.example)进行比较,以查找缺失条目。如果存在缺失条目,您可以选择:

  1. 将缺失的键添加到环境文件中
  2. 将缺失的键添加到Envy的排除列表中

有关配置环境文件、配置文件和排除的更多信息,请参阅配置文档。

envy:sync命令提供了一些可能有用的选项。

--path

如果您想针对某个特定的环境文件运行同步命令,而不是配置的环境文件,您可以使用此选项通过路径传递指定环境文件的路径。

--dry

--dry选项将阻止命令实际执行任何更新。这在您想将Envy作为CI检查的一部分运行而不实际进行更新时很有用。如果找到缺失条目,命令将失败,从而导致CI检查失败。

--force

如果您想自动更改配置的环境文件而不需要确认,您可以通过传递--force选项。这在CI机器人中很有用,您想要自动化更改.env.example文件,因为没有用户输入将被请求。

php artisan envy:prune

CleanShot 2022-02-02 at 12 03 51@2x

此命令将在您项目的配置环境文件中搜索(默认为您的.env.example)无法在任何配置的配置文件中找到的条目。如果存在额外条目,您可以选择:

  1. 从环境文件中删除额外条目
  2. 将缺失的键添加到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

CleanShot 2022-02-01 at 16 28 42@2x

某些配置键,如图所示,可能包含注释。如果你将 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)。有关更多信息,请参阅许可文件