11 个版本
0.3.0 | 2023 年 8 月 30 日 |
---|---|
0.2.4 | 2023 年 8 月 7 日 |
0.2.3 | 2023 年 7 月 30 日 |
0.1.4 | 2023 年 7 月 17 日 |
#2716 在 命令行实用工具
31KB
671 行
⚡️cdwe (cd with env)
一个简单的可配置的 cd 包装器,提供强大的实用工具来按目录定制您的环境。
(适用于 ZSH / BASH / FISH Shell)
功能
- 按目录环境变量
- 自动加载目录中的 .env 文件
- 自动执行目录中的命令
- 按目录别名
- 与任何 CD 命令一起使用
安装
- 安装二进制文件
cargo install cdwe
- 初始化您的 shell
cdwe init zsh # zsh shells
cdwe init bash # bash shells
cdwe init fish # fish shells
- 重新加载您的 shell 并开始使用!
# check that env var gets set
cdwe /Users/synoet/dev/projecta
echo $IS_DEBUG
# check that env var gets unset
cdwe ..
echo $IS_DEBUG
用法
定义按目录环境变量
您可以通过两种方式显式定义环境变量
[[directory]]
path = "/Users/synoet/dev/project"
vars = {"IS_DEBUG" = "true", "IS_PROD" = "false"}
path
: 您正在配置的目录的路径
vars
: 要设置的环境变量映射
默认情况下,环境变量也会加载到子目录中,例如,在下面的示例中 /Users/synoet/dev/project/src
也会设置 IS_DEBUG
和 IS_PROD
或者
[[env_variable]]
name = "IS_DEBUG"
value = "true"
dirs = [
"/Users/synoet/dev/project1",
"/Users/synoet/dev/project2"
]
在这里,您可以为一组目录定义一个环境变量。
name
: 是环境变量的键
value
: 是环境变量的值
dirs
: 是要加载此环境变量的目录列表
从 .env 文件加载
目录对象还接受一个 load_from
字段
[[directory]]
path = "/Users/synoet/dev/project"
vars = {"IS_DEBUG" = "true", "IS_PROD" = "false"}
load_from = [".env"]
load_from
: 要自动加载的 .env 文件名列表,这些文件应相对于在 path 中定义的目录。
在这个示例中,我们将尝试在 /Users/synoet/dev/project/.env
加载一个环境文件
与按目录环境变量不同,环境文件仅在完全匹配的目录中加载,不会在子目录中加载
或者
同样,我们也可以为多个目录定义单个环境文件
[[env_file]]
load_from = ".env"
dirs = [
"/Users/synoet/dev/macro/macro-site/astro",
"/Users/synoet/dev/macro/app-monorepo/packages/app"
]
定义按目录别名
在这里,我们可以定义仅在特定目录中设置和取消设置的别名
[[directory]]
path = "/Users/synoet/dev/project"
vars = {"IS_DEBUG" = "true", "IS_PROD" = "false"}
load_from = [".env"]
aliases = [
{ name = "build", commands = ["yarn cache clean", "yarn build", "yarn package"] }
]
在这里,我们定义了一个 build
别名,它将仅在 /User/synoet/dev/project/*
和所有子目录中存在。
aliases
: 要为目录定义的别名列表
或者
[[alias]]
name = "build"
commands = ["yarn cache clean", "yarn build", "yarn package"]
dirs = [
"/Users/synoet/dev/projecta",
"/Users/synoet/dev/projectb"
]
在这里,您为多个目录定义了相同的别名。
定义自动命令
在这里,我们可以定义在进入特定目录时自动运行的命令
[[directory]]
path = "/Users/synoet/dev/project"
vars = {"IS_DEBUG" = "true", "IS_PROD" = "false"}
load_from = [".env"]
aliases = [
{ name = "build", commands = ["yarn cache clean", "yarn build", "yarn package"] }
]
run = ["git fetch -p", "ls"]
在这种情况下,每次我们进入 /Users/synoet/dev/project
目录,cd命令将自动运行 git fetch -p
和 ls
自动命令也需要完全匹配,并且不会传播到子目录
或者
[[command]]
run = "git fetch -p"
dirs = [
"/Users/synoet/dev/cdwe",
"/Users/synoet/dev/macro/macro-api"
]
配置
全局配置选项
[config]
# Shell (Created during cdwe init <shell>)
shell = "zsh"
# Custom CD Command (defaults to cd)
cd_command = "z"
# Show alias hints on cd
alias_hints = true
# Show env hints on cd
env_hints = true
# shoe run hints on cd
run_hints = true
示例配置
[config]
cd_command = "z"
alias_hints = true
env_hints = true
command_hints = true
run_hints = true
shell = "zsh"
# Defined a directory
# Will have env var "TEST" set in this directory
# Will auto run "git fetch -p" whenever you cd into this dir
# Exposes the following aliases in that directory and sub dirs
[[directory]]
path = "/Users/synoet/dev/cdwe"
vars = { "TEST" = "testing" }
runs = ["git fetch -p"]
aliases = [
{ name = "build", commands = ["cargo build --release"]},
{ name = "run", commands = ["cargo run"]},
{ name = "ci", commands = ["cargo fmt", "cargo test"]}
]
# sets the "ENV_VAR" env var in the following directories
[[env_variable]]
name = "ENV_VAR"
value = "THIS IS A TEST"
dirs = [
"/Users/synoet/dev/cdwe",
"/Users/synoet/dev/ballast"
]
# auto loads from .env file in following directories
[[env_file]]
load_from = ".env"
dirs = [
"/Users/synoet/dev/cdwe",
"/Users/synoet/dev/project-api"
]
# will auto run the command "git fetch -p" in the following directories
[[command]]
run = "git fetch -p"
dirs = [
"/Users/synoet/dev/cdwe",
"/Users/synoet/dev/project-api"
]
卸载
- 运行 cdwe-remove 以清理所有shell元素
cdwe-remove #removes the `source <output>` from your .zshrc/.bashrc/.fish
zsh #reload your shell, use bash or fish if you use those.
- 卸载二进制文件
cargo uninstall cdwe
依赖关系
~1.6–2.3MB
~45K SLoC