5 个版本 (3 个破坏性更新)
0.4.0 | 2023年2月2日 |
---|---|
0.3.2 | 2020年4月20日 |
0.3.0 | 2019年8月22日 |
0.2.0 | 2019年8月13日 |
0.1.0 | 2019年3月9日 |
#21 in #dotenv
18KB
326 行
envy
在进入目录时设置环境变量。支持bash、zsh和fish。
示例
在工作中,每当我处理某些项目时,我必须设置一些环境变量。
例如,这些可以是Google Cloud设置、Consul主机或Docker配置。
每次自己设置正确的环境变量都很麻烦。
direnv 自动加载 .env
文件,但我不想在系统中
充斥着 .env
文件。此外,我需要在几个不相关的
项目中使用相同的环境变量,而且我不想保持 .env
文件同步。
因此,诞生了 envy
的想法。
它使用一个配置文件,定义每个文件夹应设置哪些环境变量。
安装
cargo install envy-cli
将以下行添加到您的 ~/.zshrc
文件的末尾
eval "$(envy hook zsh)"
对于bash,使用 envy hook bash
代替,并将其添加到您的 ~/.bashrc
文件中。
eval "$(envy hook bash)"
对于fish,使用 envy hook fish
代替,并将其添加到您的 ~/.config/fish/config.fish
文件中。
eval (envy hook fish)
一旦打开一个新的shell,envy
将开始匹配目录,并从配置文件中设置指定的环境变量。
使用方法
运行 envy edit
打开配置文件。(在macOS上,此文件位于 /Users/<user>/Library/Application Support/Envy/Config.toml
。)
定义正则表达式列表和设置。第一个匹配路径的正则表达式获胜。
[[paths]]
pattern = ".*project1.*"
env = [
"CONSUL_HTTP_ADDR=http://consul:8500",
"GITHUB_TOKEN=123"
]
[[paths]]
pattern = ".*project2.*"
env = [
"DOCKER_HOST=tcp://127.0.0.1:2376",
"foo=bar"
]
保存文件的那一刻,当前终端将自动获取新的设置;无需重新加载或打开新的终端。✌️
direnv 兼容性
envy
也支持像 direnv
一样加载环境文件。运行 envy allow .env
以在进入当前路径时自动加载 .env
文件。您可以添加多个 .env
文件(例如 envy allow .envrc
)。重复的键将在 envy 配置文件中按照出现的顺序被覆盖(运行 envy edit
以修改顺序)。使用 envy deny .env
从列表中删除环境文件。
命令行选项
envy 0.4.0
context-based environment variables
USAGE:
envy <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
allow Grants envy to load the given `.env` file
deny Revokes the authorization of a given `.env` file
edit Edit the envy config file
export Export environment variables based on the current directory
find Find a single environment variable and print its value
help Prints this message or the help of the given subcommand(s)
hook Print the hook to activate envy for your shell
load Load environment variables from a given `.env` file (for the current session only)
path Print path to envy config file
show Show envy config for current directory
注意:要将环境变量加载到当前 shell 中,您需要运行 eval "$(envy load)"
。
限制
- 仅在 macOS 上进行测试。它也应该在 Linux 和 Windows 上工作。
- 离开目录时不会取消设置变量。
- 这是我为自己开发的。因此,这个项目不会非常活跃地工作。
依赖关系
~6.5–9MB
~156K SLoC