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
标记移到了单独的 fix
和 list
命令中:
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
彩色输出 🌈
为了提高可用性,我们添加了彩色警告显示:
您可以使用 --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
, godotenv
和 python-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 Sponsors 或 OpenCollective 的赞助商 ❤️