direnv 大概是近几年我最喜欢的工具了,我几乎在任何的项目中都在使用它。

direnv 的名字其实就很有描述性了,当你进入存在 .envrc 的文件夹中,就会激活当前文件夹的环境变量,但是如果你切换到其他文件夹,这个环境变量就会自动删除掉。这在不同项目之间切换时非常方便,可以避免将敏感信息 (如 API 密钥) 意外提交到 Git 仓库中。

下面是我常用的一些 .envrc 示例:

与 pipenv 配合使用

# .envrc
layout pipenv

使用 layout pipenv 可以自动激活当前项目的 Python 虚拟环境。

与 pre-commit 配合使用

# .envrc
pre-commit install

确保进入这个文件夹时,pre-commit 钩子已经安装好,可以在每次提交代码时自动运行代码检查。

与 devbox 配合使用

devbox generate direnv 这个脚本是 devbox 提供的,可以直接生成 direnv 文件。

与 rbw 配合使用

这个主要是从外部获取到隐私信息:

# .envrc
export OPEN_AI_API_KEY=$(rbw get open_ai_api_key)

使用 rbw 工具从密码管理器中获取 OpenAI API 密钥,并将其设置为环境变量。这样,你就可以轻松推送到 Git 仓库中而不用担心信息泄露。

总结

总的来说,direnv 是一个非常强大的工具,可以帮助我们更好地管理项目环境变量,提高开发效率。它的主要优势包括:

  1. 自动激活/删除环境变量,避免在不同项目之间切换时出现环境变量混乱的问题。
  2. 可以与其他工具 (如 pipenv、pre-commit、devbox 等) 无缝集成,进一步提高开发效率。
  3. 可以安全地存储敏感信息,避免将其意外提交到 Git 仓库中。

如果你还没有使用过 direnv,不妨试试看,它一定会成为你开发工具箱中不可或缺的一部分。