Dotenv-linter v3.0.0

Dotenv-linter v3.0.0 版本有哪些主要变化?

我们开发了 dotenv-linter,这是一种检查 .env文件的有用工具。 它有助于发现 .env 文件中您最初可能会忽略的问题,这些问题稍后可能会导致应用程序无法正常工作。 我们将这种工具变成了通用工具,它可以连接到任何项目中,而无需考虑编程语言。Dotenv-linter是由 Evrone 的软件工程师 Mikhail Grachev 开发的一个开源项目。

 

什么是 .env文件?

.env文件或 dotenv文件是一种包含了一个项目的所有环境变量的纯文本文件。 将配置存储在环境变量中是 Manifesto of Twelve-Factor App(十二要素应用宣言)的一项宗旨。.env文件具有简单的键值格式,例如:FOO=BAR

我们已经写到过 dotenv-linter v2.2.0 版本。 自该版本发布以来,已经过去了两个半月,现在我们准备向您介绍 Dotenv-linter 的新版本 — v3.0.0。 以下是对该版本主要变化的概述!

API 改进 👍

在之前的版本中,dotenv-linter有若干个标记,其本质上属于单独的命令 --fix--show-checks:

FLAGS:
    -f, --fix            Automatically fixes warnings
    -h, --help           Prints help information
        --no-backup      Prevents .env files from being backed up when modified by -f/--fix
    -q, --quiet          Doesn't display additional information
    -r, --recursive      Recursively search and check .env files
        --show-checks    Shows list of available checks
    -v, --version        Prints version information

这导致了一些混乱。 这些标志会发生冲突,无法很好地相互配合:

$ dotenv-linter --fix --show-checks

在新版本中,我们修复了此问题,并将 --fix--show-checks 标记移到了单独的 fixlist 命令中:

FLAGS:
    -h, --help         Prints help information
    -q, --quiet        Doesn't display additional information
    -r, --recursive    Recursively searches and checks .env files
    -v, --version      Prints version information


SUBCOMMANDS:
    fix        Automatically fixes warnings [aliases: f]
    list       Shows list of available checks [aliases: l]

比较 .env 文件 🤲

此外,在新版本中,我们添加了新的 compare命令,您可以使用此命令比较 .env 文件中的键:

$ dotenv-linter compare .env .env.example
Comparing .env
Comparing .env.example
.env is missing keys: BAR
.env.example is missing keys: FOO

显示扫描的文件 👀

对于多个 .env 文件,我们并不总能清楚地知道哪些文件被 dotenv-linter 检查过,哪些文件没有。 出现这种情况可能是因为文件名不标准,或这些文件没有任何问题。 在新版本中,我们增加了一项功能,即显示扫描过的文件:

$ dotenv-linter
Checking .env
.env:1 LeadingCharacter: Invalid leading character detected

Checking .env.example
Checking .env.test

Found 1 problem

您可以使用 --quiet/-q 标记禁用此功能:

$ dotenv-linter --quiet
.env:1 LeadingCharacter: Invalid leading character detected

彩色输出 🌈

为了提高可用性,我们添加了彩色警告显示:

coloured output

您可以使用 --no-color标记禁用彩色输出。

支持多行值 💪

多行值可以存储在 .env 文件中。 其中一个选项如下所示:

# .env
MULTILINE="new\nline"

但在检查这些值时,dotenv-linter 过去通常会显示警告:

$ dotenv-linter
.env:1 QuoteCharacter: The value has quote characters (', ")

Found 1 problem

我们已经修复了此问题,现在,dotenv-linter不会对用引号包裹的多行值显示警告了。

支持 export 前缀 🔥

一些用于处理 .env 文件的库(例如 dotenv, godotenvpython-dotenv 支持 export 前缀:

# .env
export S3_BUCKET=YOURS3BUCKET
export SECRET_KEY=YOURSECRETKEYGOESHERE

有了 export 前缀,用户便可以使用 source命令从文件中导出环境变量:

$ source .env

在检查此类文件时,dotenv-linter总会显示警告:

$ dotenv-linter
.env:1 IncorrectDelimiter: The export S3_BUCKET key has incorrect delimiter
.env:1 LowercaseKey: The export S3_BUCKET key should be in uppercase
.env:2 IncorrectDelimiter: The export SECRET_KEY key has incorrect delimiter
.env:2 LowercaseKey: The export SECRET_KEY key should be in uppercase

Found 4 problems

在新版本中,我们增加了一项功能,即支持 export 前缀,现在 dotenv-linter 不会显示任何警告。

支持空格 🙌

另一个改进是支持用引号包裹的值中出现空格:

# .env
WHITESPACES="a b c"

现在,对于此类值, dotenv-linter 将不会显示警告。

验证改进 👌

我们还修复了 dotenv-linter 不能一次显示所有警告的问题:

$ dotenv-linter fix .env
Fixing .env
Original file was backed up to: ".env_1606422805"

.env:1 KeyWithoutValue: The test key should be with a value or have an equal sign

All warnings are fixed. Total: 1

$ dotenv-linter .env
Checking .env
.env:1 LowercaseKey: The test key should be in uppercase

Found 1 problem

性能改进 🚀

最后但同样重要的是,我们对原来就很快的 dotenv-linter 性能进行了改进。 最大启动时间从 9.3 毫秒降至 4.3 毫秒(降幅超过 50%)。

为了验证这一点,我们使用 hyperfine 实用工具进行了一次基准测试:

Command	                                Mean [ms]	Min [ms]    Max [ms]	Relative
dotenv-linter/dotenv-linter .env	2.7 ± 0.4	2.0	    4.3	        1.00
wemake-services/dotenv-linter .env	162.6 ± 12.1	153.0	    201.3	60.83 ± 10.20

以上就是新的 v3.0.0 版本所包含的所有主要变化。 感谢大家所做的贡献! 您可以通过在 GitHub 上点亮星标或赞助的方式来支持此项目。

您可以成为 GitHub SponsorsOpenCollective 的赞助商 ❤️

 

在使用 .env 文件的过程中可能会出现一些问题,这些问题您一开始可能没有注意,或者在检查代码时忽略了,但这些问题可能会导致应用发生故障。 这时,dotenv-linter 就派上用场了,它可以用于任何项目,而无关编程语言!
Mikhail Grachev
软件工程师,Evrone
联系我们
已有项目构想?
我们一起来实现它吧
添加附件
文件必须小于 8 MB
允许的文件类型:jpg jpeg png txt rtf pdf doc docx ppt pptx
本网站受 reCAPTCHA 保护,并适用 Google 隐私政策服务条款