marcin-orlowski/process-dotenv

一个小工具,帮助从模板中构建 DotEnv (.env) 文件

1.0.5 2021-01-27 16:46 UTC

This package is auto-updated.

Last update: 2024-08-28 00:34:51 UTC


README

Latest Stable Version Latest Unstable Version License

.env(又称 DotEnv)文件通常用于存储项目配置(例如,用于基于 Laravel 的 PHP 项目)。由于它们通常包含敏感信息,如 API 密钥或数据库凭据,因此 .env 文件不应被版本控制。这也意味着如果您需要在自动化管道中使用/运行项目,例如使用 TeamCity 或 Travis-CI 等持续集成(CI)工具,则在使用代码之前需要创建适当的 .env 文件。由于 .env 文件通常包含所有项目配置,因此除了 API 密钥之外,还有更多字段。此外,随着项目的发展,可以添加新条目,现有条目也可以更改或调整。创建 .env.dist 文件是开发人员的常见做法,尽可能多地填充(省略敏感信息),并将其放入版本控制系统。

因此,如果我们把所说的 .env.dist 作为 模板文件,那么有了正确的工具,我们就可以轻松地创建相应的 .env 文件。这就是 process-dotenv 的用武之地。这个小工具的目标非常简单 - 根据模板 .env.dist 生成 .env 文件,使用提供的值(从环境变量或作为调用参数提供)填充/替换指定的模板密钥。

注意:每当我说 .env.env.dist 时,我仅指 文件格式,而不是文件名。您可以随意命名文件名,只要其内容遵循 dot-env 文件格式即可!

注意:为了避免意外覆盖,process-dotenv 将处理后的内容输出到标准输出。要创建物理 .env 文件,需要将标准输出重定向到文件。请参阅示例以获取更多详细信息。

环境变量替换

注意:所有示例都模仿 shell 会话,因此省略 $ 行以在脚本中使用。

假设我们的 .env.dist 模板文件如下所示

KEY=val
BAR=zen
FOO=

现在,假设我们知道您的应用程序需要 KEY 是有效的 API 密钥才能通过测试,我们可以用 process-dotenv 替换它

$ KEY=barbar
$ vendor/bin/process-dotenv .env.dist > .env

这将生成以下内容的 .env 文件

KEY=barbar
BAR=zen
FOO=

如您所见,KEY 的原始值被我们通过环境变量提供的值所替换,而 BARFOO(我们没有提供替换)则未更改地复制。

参数替换

除了环境变量之外,您还可以通过 process-dotenv 调用参数传递 key=val 对,以实现相同的结果

$ vendor/bin/process-dotenv .env.dist KEY=barbar > .env

重要:第一个参数始终指源 dot-env 文件,后跟(可选的)KEY=VAL 对。您可以传递所需的对数,文件名可以是您喜欢的任何名称。

组合替换

两种替换方法都可以一起使用。当密钥既作为参数提供又作为环境变量存在时,命令行提供的值具有优先权

$ KEY=barbar
$ vendor/bin/process-dotenv .env.dist KEY=value > .env

将生成

KEY=value
BAR=zen
FOO=

需求

  • PHP 5+(CLI)

安装

使用 composer 将此包作为依赖项安装

$ composer require marcin-orlowski/process-dotenv

它将在通常的 vendor/bin 文件夹中安装 process-dotenv 脚本。

故障排除

请记住,某些,尤其是通用的键名可能已经被您的shell或系统设置。例如 USER 通常存在,并持有当前登录用户的id,HOME指向该用户的家目录等,这些变量已经设置。您可以使用 printenvexport 列出所有这些变量,以确保您的键没有与之匹配,但养成更富有创造性的习惯,避免使用如此简短且可能冲突的名称是个好习惯。

要检查您的 .env.dist 是否使用了这种“危险”的键,可以不提供任何自己的替换并运行 process-dotenv,然后将结果文件与dist文件进行比较。

$ vendor/bin/process-dotenv .env.dist | diff .env.dist

如果您遇到冲突,您可以更改您的键,或者至少通过命令行参数替换该键,以确保系统的值不会污染您生成的 .env

$ vendor/bin/process-dotenv .env.dist USER= HOME= > .env

但这很容易出错,并不推荐使用。

注意:如果您使用的是冲突键(即 USER),但您希望保留 .env.dist 中设置的值,您目前必须将其作为命令行配对传递。process-dotenv 无法判断哪个环境变量是“好的”,哪个是“坏的”,因此一旦找到存在的一个,它将直接使用其值。这就是为什么您必须通过命令行配对来覆盖它。

许可证

  • 版权所有 © 2016-2021 by Marcin Orlowski
  • Process Dotenv 工具是开源软件,根据 MIT 许可证 许可。