01 May 2024
号外号外:我的新书《现代JavaScript库开发:原理、技术与实战》出版啦!!!快点我查看
号外号外:一组小而美的JavaScript迷你库!!!快点我查看
号外号外:猿辅导招聘前端,后端,客户端啦!地点:北京!!!快点我查看

我之前写过一篇小白的 Mac 上手指南(干货),受到了很多掘友好评,最近重新安装环境,我发现以前安装 Node 和 npm 的方法还有优化空间,原来老司机也有翻车的时候。

所以我决定重写一篇文章,本文的技巧一定会让你效率翻倍,老规矩本文不止告诉你怎么做,还告诉你为什么这么做。

Node.js 是现代 Web 开发中不可或缺的工具,随着项目需求的变化,可能需要使用不同版本的 Node.js。因此,优雅地管理和切换 Node.js 版本显得尤为重要。本文将介绍如何在 Mac 上使用 Homebrew 安装n工具来管理多个 Node.js 版本,并解决 npm 全局安装包时需要sudo权限的问题。

开始之前先说明下,我的系统是 macOS 14.x,本文中介绍的工具安装方法,可能具有时效性,比如 brew 的安装可能会过时,如果遇到问题,可以去官网查看最新安装方法。

优雅地安装n

n是一个 Node.js 版本管理工具,允许你轻松地安装、管理和切换多个 Node.js 版本。它的使用简单直观,非常适合开发者。通过n,你可以在不同版本的 Node.js 之间快速切换,以满足不同项目的需求。

为什么选择 Homebrew?

Homebrew 是 macOS 上的一个包管理工具,它使得软件的安装和管理变得非常方便。通过 Homebrew 安装n,可以简化安装过程,并确保环境的整洁和一致性。

使用 Homebrew 安装n

第 1 步,安装 Homebrew,如果你还没有安装 Homebrew,可以通过以下命令在终端中安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

第 2 步,使用 Homebrew 安装n

brew install n

安装完成后,你就可以使用n来管理 Node.js 版本了。

优雅的管理 Node.js 多版本

为什么使用n来管理 Node.js 版本?

不同项目可能依赖于不同版本的 Node.js,手动管理这些版本不仅麻烦,而且容易出错。n简化了这个过程,使得安装、切换和卸载 Node.js 版本变得非常方便。

类似的工具还有 nvm,这里不对二者的优缺点做评价,笔者平时比较习惯使用 n,所以这里介绍的是 n,当然 nvm 也可以解决这个问题。

设置 N_PREFIX 环境变量

默认情况下,n 会将 Node.js 安装到 /usr/local 目录下,这通常需要管理员权限。为了避免权限问题,我们可以设置 N_PREFIX 环境变量,将 n 安装的 Node.js 版本放在用户目录下。

这个小技巧我最近才知道,再也需要 sudo 了,^_^。

创建自定义目录

首先,为n创建一个目录来存放 Node.js 版本:

mkdir -p $HOME/.n

设置环境变量

如果现在使用 n 安装了 Node.js,你会发现在命令行里执行 node 命令会说找不到 node 命令,这是因为我们改变了 n 的默认安装路径,需要将新的路径加入到 PATH 中,在你的 shell 配置文件中(如.bashrc.zshrc)添加以下行:

export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH

保存并执行以下命令使配置生效:

source ~/.bashrc   # 对于Bash用户
source ~/.zshrc    # 对于Zsh用户

使用n安装 Node.js 版本

安装最新的稳定版

通过以下命令安装最新的稳定版 Node.js:

n stable

安装最新的 LTS(长期支持)版

LTS 版本通常更稳定,适合在生产环境中使用。通过以下命令安装最新的 LTS 版本:

n lts

安装指定版本(例如 14.17.0)

有时你可能需要特定版本的 Node.js,可以使用以下命令安装:

n 14.17.0

切换 Node.js 版本

列出已安装的版本并选择一个进行切换:

n

卸载不需要的 Node.js 版本

为了保持系统整洁,可以卸载不再需要的 Node.js 版本:

n rm 14.17.0

解决 npm 全局命令需要 sudo 的问题

为什么 npm 全局安装需要 sudo?

默认情况下,如果你安装的 npm 包会创建一个全局命令的话,比如安装 pnpm,会涉及到权限问题。

这是因为 npm 全局安装包会写入系统目录(例如/usr/local),这通常需要管理员权限。因此,在安装全局包时需要使用sudo,这可能会带来一些不便和安全问题。

解决方案:创建用户目录用于全局安装

为了解决这个问题,我们可以为 npm 全局包创建一个用户目录,这样可以避免使用sudo安装全局包。

创建自定义目录

首先,为全局 npm 包创建一个目录:

mkdir -p $HOME/.npm-global

设置 npm 配置以使用自定义目录

然后,配置 npm 使用这个新的全局目录:

npm config set prefix '~/.npm-global'

修改环境变量

为了确保系统能够找到全局安装的 npm 包,需要将新目录的bin子目录添加到PATH环境变量中。在你的 shell 配置文件中添加以下行:

export PATH="$HOME/.npm-global/bin:$PATH"

保存并执行以下命令使配置生效:

source ~/.bashrc   # 对于Bash用户
source ~/.zshrc    # 对于Zsh用户

总结

通过本文,你学会了如何优雅地在 Mac 上使用 Homebrew 安装n,并使用n来管理多个 Node.js 版本。同时,你还学会了如何解决 npm 全局安装包时需要sudo的问题。希望这些技巧能帮助你在开发过程中更加高效。

这下终于告别 sudo 了,太开心了(^▽^)。

原创不易,感谢阅读,你还知道什么 Node.js 和 npm 的技巧,欢迎评论区交流。

原文网址:http://yanhaijing.com/nodejs/2024/05/01/some-practice-of-nodejs-copy/

微信公众号:颜海镜
关注微信公众号 颜海镜
微信支付二维码
赞赏支持 微信扫一扫