1. Node.js安装前的准备工作
在开始安装Node.js之前,有几个关键点需要考虑清楚。首先是版本选择问题,Node.js有LTS(长期支持)版本和Current(最新)版本之分。对于生产环境,我强烈建议选择LTS版本(如v20.x),因为它经过了更充分的测试,有长达30个月的支持周期。而Current版本虽然包含最新特性,但可能存在稳定性风险。
提示:可以通过Node.js官网的"LTS"标签快速识别长期支持版本,避免误装不稳定版本。
其次是安装方式的选择。Windows用户可以直接下载.msi安装包,macOS用户可以使用Homebrew或官方.pkg安装包,Linux用户则可以通过包管理器或源码编译安装。我个人更推荐使用包管理器(如Windows的nvm-windows、macOS的n)来管理Node.js版本,这样可以方便地在不同项目间切换版本。
安装前还需要检查系统环境:
- Windows用户需要确认PowerShell执行策略(后面会详细说明如何解决常见的脚本执行权限问题)
- macOS/Linux用户需要确认是否有足够的权限来安装全局包
- 所有用户都应检查PATH环境变量是否配置正确
2. 详细安装Node.js步骤
2.1 Windows系统安装
对于Windows用户,最直接的方式是从Node.js官网下载.msi安装包。安装过程中有几个关键选项需要注意:
- 在"Custom Setup"页面,建议勾选"Automatically install the necessary tools..."选项,这会自动安装构建工具链
- 在"Tools for Native Modules"页面,建议选择"Install Chocolatey"以便后续安装编译工具
- 安装完成后,打开CMD或PowerShell,运行以下命令验证安装:
bash复制node -v
npm -v
如果遇到"npm不是内部或外部命令"错误,通常是因为PATH环境变量未正确配置。可以尝试以下解决方案:
- 检查Node.js安装路径(通常是C:\Program Files\nodejs)是否在系统PATH中
- 如果使用nvm等版本管理工具,确保已正确切换版本
- 重启终端或IDE使环境变量生效
2.2 macOS系统安装
macOS用户可以通过多种方式安装:
方式一:使用官方.pkg安装包
- 从Node.js官网下载macOS安装包
- 双击运行安装向导
- 安装完成后验证版本:
bash复制node -v
npm -v
方式二:使用Homebrew安装
- 首先安装Homebrew(如果尚未安装):
bash复制/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 然后安装Node.js:
bash复制brew install node
方式三:使用nvm管理多版本
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install --lts
nvm use --lts
2.3 Linux系统安装
对于Linux用户,推荐使用nvm或系统包管理器:
使用nvm安装(推荐)
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
使用系统包管理器(以Ubuntu为例)
bash复制curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
3. 配置npm全局模块路径
默认情况下,npm会将全局安装的包放在系统目录中,这可能会导致权限问题。更好的做法是自定义全局模块的安装路径。
3.1 查看当前配置
首先查看当前的全局模块路径:
bash复制npm config get prefix
3.2 创建自定义目录
建议在用户主目录下创建专用目录:
bash复制mkdir ~/.npm-global
3.3 配置npm使用新路径
设置新的全局模块路径:
bash复制npm config set prefix '~/.npm-global'
3.4 更新环境变量
为了让系统能找到全局安装的命令,需要将新路径加入PATH:
Windows
- 打开系统属性 -> 高级 -> 环境变量
- 在用户变量中编辑PATH,添加:
%USERPROFILE%\.npm-global
macOS/Linux
在shell配置文件(如.bashrc/.zshrc)中添加:
bash复制export PATH=~/.npm-global/bin:$PATH
然后执行:
bash复制source ~/.bashrc # 或 source ~/.zshrc
3.5 验证配置
安装一个全局包测试:
bash复制npm install -g typescript
which tsc # 应该显示新路径下的tsc
4. 配置npm缓存路径
npm缓存默认也放在系统目录,我们可以将其移到自定义位置以减少系统盘占用。
4.1 查看当前缓存路径
bash复制npm config get cache
4.2 设置新缓存路径
bash复制npm config set cache '~/.npm-cache'
4.3 清理旧缓存(可选)
bash复制npm cache clean --force
5. 解决常见安装问题
5.1 PowerShell执行策略问题
在Windows上使用npm时,可能会遇到:
code复制npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
解决方案:
- 以管理员身份打开PowerShell
- 运行:
powershell复制Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 重新打开终端
5.2 镜像源配置
国内用户可能会遇到安装速度慢的问题,可以配置淘宝镜像:
设置registry:
bash复制npm config set registry https://registry.npmmirror.com
设置二进制镜像(针对node-sass等):
bash复制npm config set sass_binary_site https://npmmirror.com/mirrors/node-sass
npm config set phantomjs_cdnurl https://npmmirror.com/mirrors/phantomjs
验证配置:
bash复制npm config get registry
5.3 权限问题
在Linux/macOS上,避免使用sudo安装全局包,这会导致权限问题。正确的做法是:
- 按照前面所述配置自定义全局路径
- 或者使用
npm install -g --prefix ~/.npm-global
如果已经出现权限问题,可以修复:
bash复制sudo chown -R $(whoami) ~/.npm
sudo chown -R $(whoami) /usr/local/lib/node_modules
6. 进阶配置与优化
6.1 使用.npmrc文件管理配置
可以在项目根目录或用户主目录创建.npmrc文件来管理npm配置:
示例~/.npmrc内容:
code复制prefix=~/.npm-global
cache=~/.npm-cache
registry=https://registry.npmmirror.com
sass_binary_site=https://npmmirror.com/mirrors/node-sass
phantomjs_cdnurl=https://npmmirror.com/mirrors/phantomjs
6.2 版本管理工具推荐
对于需要频繁切换Node.js版本的项目,推荐使用:
- Windows: nvm-windows
- macOS/Linux: nvm或n
安装nvm-windows示例:
- 下载安装包:https://github.com/coreybutler/nvm-windows/releases
- 安装后使用:
bash复制nvm install 20.14.0
nvm use 20.14.0
6.3 性能优化
- 使用npm的最新版本:
bash复制npm install -g npm@latest
- 并行安装:
bash复制npm set prefer-online true
npm set fund false
npm set progress false
- 使用pnpm替代npm(更节省磁盘空间):
bash复制npm install -g pnpm
pnpm setup
7. 实际项目中的经验分享
在实际项目开发中,我发现以下几个配置特别有用:
- 项目特定配置:在每个项目根目录创建.npmrc,可以覆盖全局配置:
code复制engine-strict=true
save-exact=true
-
依赖锁定:总是使用package-lock.json或npm-shrinkwrap.json来确保依赖一致性
-
脚本钩子:利用npm scripts的pre/post钩子自动化常见任务:
json复制{
"scripts": {
"preinstall": "node check-version.js",
"postinstall": "node patch-deps.js"
}
}
-
安全审计:定期运行
npm audit检查依赖漏洞,使用npm audit fix自动修复 -
清理策略:在CI/CD流程中添加清理步骤:
bash复制npm cache clean --force
rm -rf node_modules
npm install --production
我在多个生产项目中验证了这些配置,它们显著提高了构建的可靠性和一致性。特别是自定义全局路径的配置,彻底解决了多项目环境下的版本冲突问题。
