ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

fnm 快速上手:一款用 Rust 写的 Node.js 版本管理器,3 分钟配好自动切换

fnm 快速上手:一款用 Rust 写的 Node.js 版本管理器,3 分钟配好自动切换 fnm 快速上手一款用 Rust 写的 Node.js 版本管理器3 分钟配好自动切换【免费下载链接】fnm Fast and simple Node.js version manager, built in Rust项目地址: https://gitcode.com/gh_mirrors/fn/fnm同时维护几个前端项目时你多半遇到过这种局面A 项目跑 Node 16B 项目必须用 20打开终端得先回忆各项目要哪个版本切完目录又容易忘记重新切换。fnm 是一个用 Rust 编写的 Node.js 版本管理器它能读取项目目录里的.node-version文件并自动完成切换让你少跑一条命令。读完本文你会装好 fnm、配好 shell并了解三个省掉手动切换的进阶配置。fnm 是什么3 个值得换过去的理由单文件二进制启动即就绪fnm 不依赖任何 shell 脚本一条命令装完就能用新打开 shell 时几乎没有额外开销。如果你用过 nvm知道每次启动 shell 都要加载一长串脚本fnm 的做法是把它压缩成一个 Rust 二进制。兼容 nvm 的项目约定它识别.node-version和.nvmrc文件迁移不用改项目配置目录里连这两个文件都没有时默认还会读package.json的engines.node可用--resolve-enginesfalse关闭。跨平台macOS、Windows、Linux 都支持bash、zsh、fish、PowerShell 均有对应的初始化方式。仓库的 benchmarks/ 目录里还附带了基于 hyperfine 的对比脚本basic/fnm 对 basic/nvm覆盖安装 切换 验证的完整流程方便你自行验证。从安装到第一次切换只需 3 步环境准备与安装fnm 本身不需要 Node.js 环境选一个你顺手的包管理器即可brew install fnm # macOS / Linux winget install Schniz.fnm # Windows cargo install fnm # 跨平台需要 Rust 环境这些方式装出来的都是同一个单文件二进制几秒即可完成README 里还给了官方安装脚本和 release 二进制两种备选。shell 初始化fnm 通过fnm env输出一段环境配置需要你的 shell 执行它。把下面这行写进~/.bashrczsh 用户把--shell zsh并写进~/.zshrceval $(fnm env --use-on-cd --shell bash)这里有两个关键参数显式传--shell可以跳过运行时的 shell 推断更快也更稳--use-on-cd会注册一个目录变更钩子你每次cd进项目时自动切换对应版本官方文档将其列为强烈推荐建议一开始就加上。安装并切换第一个版本fnm install 20 # 安装最新的 Node 20.x fnm use 20 # 当前 shell 切换到 20.x node -v # 确认生效版本号支持部分匹配写20会解析到已知的最新 20.x写完整版本号或lts/iron这类 LTS 名称也可以。fnm 常用命令速查8 条高频操作命令作用备注fnm install 20安装最新 Node 20.x接受18、20.10.0、lts/NAME等形式fnm install --lts安装最新 LTS 版本等价于直接指定 LTSfnm use 20当前 shell 切换到 20.x未安装时加--install-if-missingfnm use按当前目录版本文件切换读.node-version/.nvmrcfnm ls列出本地已安装版本list的别名fnm ls-remote --lts查询远端 LTS 版本可加--filter 20做范围过滤fnm default 20设置默认版本不带参数运行时显示当前默认fnm exec --using20 npm i用指定版本跑单条命令不改变当前 shell 状态进阶配置3 个让你少动手的设置monorepo 里的递归版本查找默认情况下fnm use不带参数时只查当前目录local策略进子包目录就会报找不到版本文件。把初始化行改成eval $(fnm env --use-on-cd --version-file-strategyrecursive --shell bash)配完后在repo/packages/my-package里执行fnm use会向上找到仓库根目录的.node-version并切到那个版本子目录工作不再需要单独放版本文件。固定默认版本与版本别名新开 shell 没有版本文件时走的就是默认版本再给常用版本起个名字输入更短fnm default 20 # 默认版本设为 20.x fnm alias 20 work # 之后 fnm use work 即可切换别名用fnm unalias work删除。团队共享的版本名如legacy、stable起好后新人照抄就行。装版本时顺手启用 Corepackfnm install --corepack-enabled --lts加上--corepack-enabled后每次新装 Node 版本 fnm 都会替你执行corepack enable省去手动开启 pnpm/yarn 的一步。官方标注该功能为实验性介意的话可以保持默认关闭。新手常见问题新终端不认 fnm 命令或 node 版本没变大概率是fnm env那行没写进当前 shell 对应的配置文件bash 看.bashrczsh 看.zshrc确认写对了重新开一个终端。fnm use不带参数报 Cant find version in dotfile默认策略只查当前目录按上文改成--version-file-strategyrecursive即可。fnm use 20提示版本不存在该版本还没装用fnm use 20 --install-if-missing一条命令装好再切。相关资源完整命令参考docs/commands.md全部配置开关说明docs/configuration.md用--node-dist-mirror装 nightly 版本docs/nightly.md延伸阅读版本解析逻辑在 src/choose_version_for_user_input.rs版本文件读取在 src/version_files.rs各 shell 的适配实现在 src/shell/把版本切换从每次都要想一步变成cd 进去就发生是 fnm 最核心的价值。现在只需做一件事打开你的 shell 配置文件把上面那一行eval写进去重启终端然后fnm install装一个你手头的版本试试。【免费下载链接】fnm Fast and simple Node.js version manager, built in Rust项目地址: https://gitcode.com/gh_mirrors/fn/fnm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表