17 个版本 (7 个重大更新)
0.8.0 | 2021 年 9 月 13 日 |
---|---|
0.7.0 | 2021 年 8 月 9 日 |
0.6.0 | 2021 年 5 月 15 日 |
0.5.2 | 2021 年 5 月 9 日 |
0.1.9 | 2021 年 1 月 3 日 |
#1296 in 开发工具
每月 50 次下载
71KB
1.5K SLoC
🤏 Smol Node Manager
终端:kitty | 提示:starship
✨ 特点
- 它运行得很快,因为是用 Rust 编写的。
- 跨平台(Linux/macOS/Windows)
- 支持
.nvmrc
、.node-version
和package.json
- 支持多个 shell
- 众多命令和选项
🚀 安装
使用软件包管理器
- 使用
cargo
(Linux/macOS/Windows)
cargo install snm
- 使用
yay
或pamac
(Arch Linux)
为什么 snm 在 Arch 中可用?因为我喜欢 Arch Linux
# Using `yay`
yay -S snm
# Using `pamac`
pamac build snm
使用二进制文件
请查看 发布页面,其中提供了适用于不同操作系统的预构建 snm
二进制文件。
使用脚本(Linux/macOS/Windows)
curl -fsSL https://git.io/JLFnA | bash
可用参数
--install-dir
: 设置自定义的二进制安装目录。默认为$HOME/.snm
--skip-shell
: 跳过将特定 shell 的加载器追加到$SHELL
配置文件中。
注意:
snm
在底层使用符号链接来管理别名。因此,如果您使用的是 Windows,请确保您已启用 开发者模式 或您的用户有创建符号链接的权限。您可以在此处了解更多信息 here
🔧 设置
- Bash
将以下行添加到您的 ~/.bashrc
eval "$(snm env bash)"
- Zsh
将以下行添加到您的 ~/.zshrc
eval "$(snm env zsh)"
- Fish
将以下行添加到您的 ~/.config/fish/config.fish
snm env fish | source
- PowerShell
将以下行添加到您的 ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
snm env pwsh | Out-String | Invoke-Expression
您可以在此处找到有关 PowerShell 配置文件的更多信息
🤞 用法
全局选项/标志
选项 | 环境变量 | 描述 |
---|---|---|
--snm-dir |
SNM_DIR |
所有文件和别名保存的目录 |
--node-dist-mirror |
SNM_NODE_DIST_MIRROR |
Nodejs 下载镜像 |
示例
snm [--snm-dir="~/.something/else"] [--node-dist-mirror="https://myrelease.com"]
标志 | 描述 |
---|---|
--no-use |
仅下载发行版 |
--version |
打印版本 |
--帮助 |
打印帮助文档 |
命令
snm install <version|alias>
: 使用提供的版本或 LTS 名称安装 Nodejs
# Following command will downloads and installs the most recent 14.x.x release
snm install 14
# Following command will download the most recent lts/fermium release
snm install lts/fermium
# or snm install lts-fermium
# or snm i lts-fermium
snm uninstall [version|alias]
: 删除已安装的 Nodejs
如果指定了类似于
ten
或lts-fermium
的别名,则将删除指向该版本的别名以及指向同一版本的别名。此外,如果找到同一 semver 范围内的多个安装,或者提供的版本/别名处于活动状态,则删除版本将引发错误。要覆盖此行为,请添加--force
标志。
# Following command will remove 14.x.x installation
snm uninstall 14
# Following command will remove the lts/fermium release
snm uninstall lts/fermium
# or snm uninstall lts-fermium
# or snm rm lts-fermium
# Add --force flag to forcefully remove the active version
snm uninstall --force 16
snm use [version]
: 更改 Nodejs 版本,支持.nvmrc
和.node-version
# Following command will use a downloaded version matching 10.x.x
snm use 10
# Searches for `.nvmrc` or `.node-version`, if <version> is not provided
snm use
-
snm lts
: 安装最新的 lts 发布版 -
snm latest
: 安装最新的 current 发布版 -
snm ls
: 列出所有本地下载的版本及其别名 -
snm ls-remote [version]
: 列出远程 Node.js 版本
# Following command list 20 results with version matching 14.x.x
snm ls-remote 14
# This will show all the results
snm ls-remote 14 --all
# Following command will show 25 results
snm ls-remote 14 --count 25
snm alias <version> <name>
: 将版本别名化为常用名称
# Following command will alias the version 10 to ten
# 10 can refer to any semver release ie 10.15.0
snm alias 10 ten
snm unalias [name]
: 删除别名
# Following command will removes alias `ten`
snm unalias ten
# Removes all the aliases
snm unalias --all
snm exec <version>
: 在 snm 上下文中执行命令,修改 PATH
# Following command will output the Nodejs version
snm exec 10 -- node -v
# Following command will run yarn with Nodejs v10.x.x
snm exec 10 -- yarn start
snm purge
: 删除所有已安装的版本和别名。除了活动版本。
# Doesn't remove the active version
snm purge
# Will remove everything including the active version
snm purge --all
-
snm which <version>
: 打印已下载 Nodejs 版本的路径 -
snm help <subcommand>
或snm <subcommand> --help
: 子命令的帮助文档
注意:这只是帮助文档的一小部分。请确保阅读内置的帮助文档
自动补全
snm
二进制文件内置了自动补全支持。请根据您的 shell 遵循说明以生成补全。
- 对于 Zsh
snm completions zsh
- 对于 Bash
snm completions bash
- 对于 Fish
snm completions fish
- 对于 PowerShell
snm completions pwsh
生成补全后,请根据您的 shell 指令了解如何加载和使用它们。
🤝 贡献
PR 总是受欢迎的。您可以通过添加更多测试来帮助我 :)
首先,您需要通过 rustup 安装 rust 工具链。
最小支持的 Rust 版本 (MSRV):1.54.0
- 设置
git clone https://github.com/numtostr/snm
cd ./snm
- 构建
# For debug build
cargo build
# For release build
cargo build --release
- 运行
# Same as running `snm --help`
cargo run -- --help
# Same as running `snm lsr 14`
cargo run -- lsr 14
💐 致谢
如果没有这些优秀的项目,这个项目将无法实现。
依赖项
~10–22MB
~344K SLoC