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 是一个非常强大的工具,可以帮助我们更好地管理项目环境变量,提高开发效率。它的主要优势包括:
- 自动激活/删除环境变量,避免在不同项目之间切换时出现环境变量混乱的问题。
- 可以与其他工具 (如 pipenv、pre-commit、devbox 等) 无缝集成,进一步提高开发效率。
- 可以安全地存储敏感信息,避免将其意外提交到 Git 仓库中。
如果你还没有使用过 direnv,不妨试试看,它一定会成为你开发工具箱中不可或缺的一部分。