#nodejs #版本管理器 #node #符号链接 #shell #smol #命令

bin+lib snm

Smol 和简单的 Node 版本管理器

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

build crates.io arch-aur

snm

终端:kitty | 提示:starship

✨ 特点

  • 它运行得很快,因为是用 Rust 编写的。
  • 跨平台(Linux/macOS/Windows)
  • 支持 .nvmrc.node-versionpackage.json
  • 支持多个 shell
  • 众多命令和选项

🚀 安装

使用软件包管理器

  • 使用 cargo(Linux/macOS/Windows)
cargo install snm
  • 使用 yaypamac(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

如果指定了类似于 tenlts-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

💐 致谢

如果没有这些优秀的项目,这个项目将无法实现。

  • n 用于 CLI 设计
  • fnm 提供了一个基础项目和一些代码 :)

依赖项

~10–22MB
~344K SLoC