Node.js 版本概述
版本命名规则
Node.js 采用语义化版本控制(Semantic Versioning),格式为:主版本号.次版本号.修订号
主版本号:不兼容的 API 修改
次版本号:向下兼容的功能性新增
修订号:向下兼容的问题修正
版本类型
LTS 版本(长期支持版本)
Active LTS:当前活跃维护的 LTS 版本
Maintenance LTS:维护模式的 LTS 版本
特点:稳定性好,生产环境推荐使用
发布周期:每年 10 月发布新的 LTS 版本
Current 版本(当前版本)
特点:包含最新特性,可能不够稳定
适用场景:开发环境、测试新特性
主要版本历史
版本
发布时间
LTS 状态
EOL 时间
主要特性
v18.x
2022.04
Active LTS
2025.04
fetch API、Test Runner
v16.x
2021.04
Maintenance LTS
2024.04
npm 7、Apple Silicon 支持
v14.x
2020.04
EOL
2023.04
Optional Chaining、Nullish Coalescing
v12.x
2019.04
EOL
2022.04
ES6 模块支持、TLS 1.3
NVM 简介与优势
什么是 NVM?
NVM(Node Version Manager)是 Node.js 版本管理工具,允许在同一台机器上安装和管理多个 Node.js 版本。
NVM 的优势
版本切换:快速切换不同 Node.js 版本
项目隔离:不同项目使用不同 Node.js 版本
测试兼容性:测试代码在多个版本下的兼容性
简化升级:轻松升级或降级 Node.js 版本
NVM 工具对比
工具
平台支持
特点
nvm
Linux/macOS
原生 bash 脚本,功能完整
nvm-windows
Windows
Windows 专用版本
fnm
跨平台
Rust 编写,速度快
n
Linux/macOS
简单轻量
NVM 安装指南
Windows 系统安装
方法一:使用 nvm-windows
下载安装包
bash
复制代码
# 访问GitHub下载最新版本
https://github.com/coreybutler/nvm-windows/releases
运行安装程序
下载 nvm-setup.zip
解压并运行 nvm-setup.exe
按提示完成安装
验证安装
cmd
复制代码
nvm version
方法二:使用 Chocolatey
powershell
复制代码
# 安装Chocolatey(如果未安装)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 安装nvm-windows
choco install nvm
Linux/macOS 系统安装
使用 curl 安装
bash
复制代码
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
使用 wget 安装
bash
复制代码
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
配置环境变量
bash
复制代码
# 添加到 ~/.bashrc 或 ~/.zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# 重新加载配置
source ~/.bashrc
NVM 基础使用
查看版本信息
bash
复制代码
# 查看NVM版本
nvm --version
# 查看可安装的Node.js版本
nvm list available # Windows
nvm ls-remote # Linux/macOS
# 查看已安装的版本
nvm list # Windows
nvm ls # Linux/macOS
安装 Node.js 版本
bash
复制代码
# 安装最新LTS版本
nvm install --lts
# 安装指定版本
nvm install 18.17.0
nvm install 16.20.0
# 安装最新稳定版
nvm install node
# 安装最新版本并设置为默认
nvm install node --latest-npm
切换 Node.js 版本
bash
复制代码
# 切换到指定版本
nvm use 18.17.0
# 切换到最新LTS版本
nvm use --lts
# 设置默认版本
nvm alias default 18.17.0 # Linux/macOS
nvm use 18.17.0 # Windows每次启动终端需要重新设置
卸载 Node.js 版本
bash
复制代码
# 卸载指定版本
nvm uninstall 16.20.0
# 查看当前使用的版本
nvm current
npm 完全使用指南
npm 简介
npm(Node Package Manager)是 Node.js 的包管理器,是世界上最大的软件注册表。它不仅用于管理 Node.js 包,也是现代前端开发的核心工具。
npm 版本与更新
查看 npm 版本
bash
复制代码
# 查看当前npm版本
npm --version
npm -v
# 查看详细信息
npm version
# 查看所有相关版本信息
npm version --json
更新 npm
bash
复制代码
# 更新到最新版本
npm install -g npm@latest
# 更新到指定版本
npm install -g npm@8.19.2
# 查看可用版本
npm view npm versions --json
包管理命令
安装包
bash
复制代码
# 安装生产依赖
npm install
npm i
# 安装开发依赖
npm install
npm i
# 安装全局包
npm install -g
# 安装指定版本
npm install
npm install
npm install
# 从Git仓库安装
npm install git+https://github.com/user/repo.git
npm install github:user/repo
npm install user/repo
# 从本地路径安装
npm install ./local-package
npm install ../another-package
# 安装所有依赖
npm install # 根据package.json安装
npm ci # 从package-lock.json快速安装
卸载包
bash
复制代码
# 卸载本地包
npm uninstall
npm remove
npm rm
# 卸载开发依赖
npm uninstall
# 卸载全局包
npm uninstall -g
# 清理未使用的包
npm prune # 移除未在package.json中的包
npm prune --production # 移除devDependencies
更新包
bash
复制代码
# 更新所有包
npm update
# 更新指定包
npm update
# 更新全局包
npm update -g
# 检查过期包
npm outdated # 检查本地包
npm outdated -g # 检查全局包
# 查看包的最新版本
npm view
npm show
包信息查询
搜索包
bash
复制代码
# 搜索包
npm search
npm s
# 在线搜索(更详细)
npm search
npm search
查看包信息
bash
复制代码
# 查看包详细信息
npm info
npm view
npm show
# 查看特定字段
npm view
npm view
npm view
npm view
npm view
# 查看包的所有版本
npm view
npm view
# 查看包的文档
npm docs
npm home
# 查看包的仓库
npm repo
列出已安装的包
bash
复制代码
# 列出本地包
npm list
npm ls # 简写
# 只显示顶级包
npm list --depth=0
# 列出全局包
npm list -g
npm list -g --depth=0
# 列出特定包
npm list
npm list
# 以JSON格式输出
npm list --json
npm list --json --depth=0
# 列出生产环境包
npm list --prod
npm list --only=production
# 列出开发环境包
npm list --dev
npm list --only=development
脚本管理
运行脚本
bash
复制代码
# 运行package.json中定义的脚本
npm run
# 常用内置脚本
npm start # 等同于 npm run start
npm stop # 等同于 npm run stop
npm test # 等同于 npm run test
npm restart # 先stop再start
# 查看所有可用脚本
npm run
# 静默运行(减少输出)
npm run
npm run
# 传递参数给脚本
npm run
生命周期脚本
bash
复制代码
# npm会自动运行的生命周期脚本
preinstall # 安装前
install # 安装时
postinstall # 安装后
preuninstall # 卸载前
uninstall # 卸载时
postuninstall # 卸载后
preversion # 版本变更前
version # 版本变更时
postversion # 版本变更后
pretest # 测试前
test # 测试时
posttest # 测试后
prepublish # 发布前(已废弃)
prepublishOnly # 仅发布前
publish # 发布时
postpublish # 发布后
配置管理
查看配置
bash
复制代码
# 查看所有配置
npm config list
npm config ls # 简写
# 查看详细配置
npm config list -l
# 查看特定配置
npm config get
npm get
# 常用配置查看
npm config get registry
npm config get cache
npm config get prefix
设置配置
bash
复制代码
# 设置配置
npm config set
npm set
# 常用配置设置
npm config set registry https://registry.npmmirror.com
npm config set cache ~/.npm
npm config set prefix /usr/local
# 设置代理
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
# 删除配置
npm config delete
npm config rm
# 编辑配置文件
npm config edit
配置文件位置
bash
复制代码
# 用户级配置文件
~/.npmrc # Unix/Linux/macOS
%USERPROFILE%\.npmrc # Windows
# 项目级配置文件
# 全局配置文件
/etc/npmrc # Unix/Linux
%APPDATA%\npm\etc\npmrc # Windows
缓存管理
缓存操作
bash
复制代码
# 查看缓存信息
npm cache verify
# 清理缓存
npm cache clean
npm cache clean --force # 强制清理
# 查看缓存目录
npm config get cache
# 设置缓存目录
npm config set cache /path/to/cache
# 查看缓存内容
npm cache ls # 列出缓存内容
发布与版本管理
初始化项目
bash
复制代码
# 初始化新项目
npm init
npm init -y # 使用默认值
# 使用模板初始化
npm init
npm create
# 常用模板
npm init react-app my-app
npm init vue my-app
npm init express-app my-app
版本管理
bash
复制代码
# 查看当前版本
npm version
# 升级版本
npm version patch # 修订版本 1.0.0 -> 1.0.1
npm version minor # 次版本 1.0.0 -> 1.1.0
npm version major # 主版本 1.0.0 -> 2.0.0
# 预发布版本
npm version prerelease # 1.0.0 -> 1.0.1-0
npm version prepatch # 1.0.0 -> 1.0.1-0
npm version preminor # 1.0.0 -> 1.1.0-0
npm version premajor # 1.0.0 -> 2.0.0-0
# 指定版本
npm version 1.2.3
发布包
bash
复制代码
# 登录npm
npm login
npm adduser # 别名
# 查看登录状态
npm whoami
# 发布包
npm publish
# 发布测试版本
npm publish --tag beta
npm publish --tag alpha
# 发布到指定registry
npm publish --registry https://registry.npmjs.org
# 撤销发布(24小时内)
npm unpublish
npm unpublish
安全与审计
安全审计
bash
复制代码
# 检查安全漏洞
npm audit
# 自动修复安全问题
npm audit fix
# 强制修复(可能导致破坏性更改)
npm audit fix --force
# 查看详细审计报告
npm audit --json
npm audit --parseable
# 设置审计级别
npm audit --audit-level moderate # 只显示中等及以上级别
npm audit --audit-level high # 只显示高级别
包完整性
bash
复制代码
# 验证包完整性
npm ls # 检查依赖完整性
npm doctor # 运行健康检查
# 检查包的签名
npm verify-signatures
# 安装时验证完整性
npm install --package-lock-only
npm ci # 严格按照lock文件安装
工作空间管理
工作空间操作
bash
复制代码
# 初始化工作空间
npm init -w ./packages/package-a
# 在工作空间中安装依赖
npm install lodash -w package-a
# 在所有工作空间运行命令
npm run test --workspaces
# 在特定工作空间运行命令
npm run build -w package-a
npm run build --workspace=package-a
# 列出工作空间
npm ls --workspaces
高级功能
npx 使用
bash
复制代码
# 执行本地安装的包
npx
# 执行远程包(临时下载执行)
npx create-react-app my-app
npx cowsay "Hello World"
# 指定包版本执行
npx
# 忽略本地包,强制下载
npx --ignore-existing
# 静默模式
npx --quiet
npx -q
链接开发
bash
复制代码
# 创建全局链接
npm link # 在包目录中执行
# 链接到项目
npm link
# 取消链接
npm unlink
npm unlink # 在包目录中执行
私有包管理
bash
复制代码
# 配置私有registry
npm config set @company:registry https://npm.company.com
# 安装私有包
npm install @company/private-package
# 发布私有包
npm publish --access restricted # 私有包
npm publish --access public # 公开包
性能优化
安装优化
bash
复制代码
# 使用 npm ci 进行快速安装
npm ci # 适用于 CI/CD 环境
# 并行安装
npm install --prefer-offline # 优先使用离线缓存
npm install --no-optional # 跳过可选依赖
# 生产环境安装
npm install --only=production
npm install --omit=dev # npm 7+
# 减少依赖树深度
npm dedupe # 去重依赖
npm ls --depth=0 # 检查顶级依赖
镜像源配置
bash
复制代码
# 设置淘宝镜像
npm config set registry https://registry.npmmirror.com
# 设置官方镜像
npm config set registry https://registry.npmjs.org
# 临时使用镜像
npm install --registry https://registry.npmmirror.com
# 查看当前镜像源
npm config get registry
# 使用nrm管理镜像源
npm install -g nrm
nrm ls # 列出可用镜像源
nrm use taobao # 切换到淘宝镜像
nrm test # 测试镜像源速度
npm 常用配置示例
.npmrc 配置文件示例
ini
复制代码
# 镜像源配置
registry=https://registry.npmmirror.com
# 缓存配置
cache=/Users/username/.npm-cache
# 安装配置
save-exact=true
package-lock=true
# 安全配置
audit-level=moderate
# 代理配置
proxy=http://proxy.company.com:8080
https-proxy=http://proxy.company.com:8080
# 私有包配置
@company:registry=https://npm.company.com
# 发布配置
access=public
package.json 脚本示例
json
复制代码
{
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js",
"build": "webpack --mode production",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
"lint": "eslint src/",
"lint:fix": "eslint src/ --fix",
"format": "prettier --write src/",
"clean": "rm -rf dist/",
"prebuild": "npm run clean",
"postbuild": "npm run test",
"deploy": "npm run build && gh-pages -d dist"
}
}
故障排除
常见问题解决
bash
复制代码
# 清理并重新安装
rm -rf node_modules package-lock.json
npm install
# 权限问题解决
sudo chown -R $(whoami) ~/.npm
sudo chown -R $(whoami) /usr/local/lib/node_modules
# 网络问题
npm config set proxy http://proxy:8080
npm config set strict-ssl false # 不推荐,仅用于调试
# 版本冲突
npm ls # 查看依赖树
npm dedupe # 去重依赖
npm shrinkwrap # 锁定依赖版本
调试信息
bash
复制代码
# 显示调试信息
npm install --verbose
npm install --loglevel verbose
# 显示详细错误
npm install --loglevel silly
# 查看npm配置路径
npm config get userconfig
npm config get globalconfig
常见问题及解决方案
1. 权限问题
Windows 权限问题
powershell
复制代码
# 以管理员身份运行PowerShell
# 设置执行策略
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Linux/macOS 权限问题
bash
复制代码
# 修复权限
sudo chown -R $(whoami) ~/.nvm
chmod +x ~/.nvm/nvm.sh
2. 环境变量配置问题
Windows 环境变量
cmd
复制代码
# 手动设置环境变量
setx NVM_HOME "C:\Users\%USERNAME%\AppData\Roaming\nvm"
setx NVM_SYMLINK "C:\Program Files\nodejs"
setx PATH "%PATH%;%NVM_HOME%;%NVM_SYMLINK%"
Linux/macOS 环境变量
bash
复制代码
# 检查配置文件
echo $NVM_DIR
which nvm
# 重新加载NVM
source ~/.nvm/nvm.sh
3. 网络连接问题
设置代理
bash
复制代码
# 设置npm代理
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
# 设置NVM代理
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/
使用国内镜像
bash
复制代码
# 设置淘宝镜像
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
export NVM_IOJS_ORG_MIRROR=https://npmmirror.com/mirrors/iojs/
4. 版本切换不生效
检查全局安装的 Node.js
bash
复制代码
# 卸载全局安装的Node.js
# Windows: 通过控制面板卸载
# Linux/macOS:
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/bin/npm
清理 PATH 环境变量
bash
复制代码
# 移除其他Node.js路径
echo $PATH | grep node
5. npm 包管理问题
全局包迁移
bash
复制代码
# 在新版本中重新安装全局包
npm list -g --depth=0 > global-packages.txt
npm install -g $(cat global-packages.txt | grep -v npm | awk '{print $2}' | cut -d@ -f1)
手动安装 Node.js
Windows 手动安装
方法一:官方安装包
下载安装包
访问 Node.js 官网
选择 LTS 版本或 Current 版本
下载 Windows Installer (.msi)
安装过程
diff
复制代码
- 运行.msi文件
- 接受许可协议
- 选择安装路径(建议默认)
- 选择组件(建议全选)
- 完成安装
验证安装
cmd
复制代码
node --version
npm --version
方法二:便携版安装
下载便携版
diff
复制代码
- 下载Windows Binary (.zip)
- 解压到指定目录
配置环境变量
cmd
复制代码
# 添加到PATH
setx PATH "%PATH%;C:\path\to\node"
Linux 手动安装
方法一:包管理器安装
bash
复制代码
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# CentOS/RHEL
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs
# Arch Linux
sudo pacman -S nodejs npm
方法二:二进制包安装
bash
复制代码
# 下载二进制包
wget https://nodejs.org/dist/v18.17.0/node-v18.17.0-linux-x64.tar.xz
# 解压
tar -xJf node-v18.17.0-linux-x64.tar.xz
# 创建符号链接
sudo ln -s /path/to/node-v18.17.0-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /path/to/node-v18.17.0-linux-x64/bin/npm /usr/local/bin/npm
macOS 手动安装
方法一:官方安装包
bash
复制代码
# 下载并安装.pkg文件
# 从官网下载macOS Installer (.pkg)
方法二:Homebrew 安装
bash
复制代码
# 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装Node.js
brew install node
# 安装特定版本
brew install node@16
最佳实践建议
1. 版本选择策略
生产环境:使用 LTS 版本,确保稳定性
开发环境:可使用 Current 版本体验新特性
团队协作 :统一 Node.js 版本,使用.nvmrc文件
2. 项目版本管理
bash
复制代码
# 创建.nvmrc文件
echo "18.17.0" > .nvmrc
# 使用项目指定版本
nvm use
# 自动切换版本(需要配置)
# 在.bashrc或.zshrc中添加
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
3. 全局包管理
bash
复制代码
# 列出全局包
npm list -g --depth=0
# 保存全局包列表
npm list -g --depth=0 --json > global-packages.json
# 在新版本中恢复全局包
# 解析JSON并安装包
4. 性能优化
bash
复制代码
# 使用更快的镜像源
npm config set registry https://registry.npmmirror.com
# 使用yarn替代npm
npm install -g yarn
yarn config set registry https://registry.npmmirror.com
5. 安全考虑
bash
复制代码
# 定期更新npm
npm install -g npm@latest
# 检查安全漏洞
npm audit
npm audit fix
# 使用npm ci进行生产环境安装
npm ci --only=production
6. 开发环境配置
bash
复制代码
# 配置npm初始化默认值
npm config set init.author.name "Your Name"
npm config set init.author.email "your.email@example.com"
npm config set init.license "MIT"
# 设置npm缓存目录
npm config set cache /path/to/npm-cache
故障排除指南
诊断命令
bash
复制代码
# 检查NVM状态
nvm --version
nvm current
nvm ls
# 检查Node.js和npm
node --version
npm --version
which node
which npm
# 检查环境变量
echo $PATH
echo $NVM_DIR
# 检查npm配置
npm config list
npm config get registry
常见错误及解决
"nvm: command not found"
检查安装是否成功
重新加载 shell 配置文件
检查环境变量配置
版本切换失败
检查是否有其他 Node.js 安装
清理 PATH 中的冲突路径
重启终端
权限错误
使用管理员权限
修复文件权限
检查防火墙设置
结语
Node.js 版本管理是现代 JavaScript 开发的重要技能。通过合理使用 NVM 等版本管理工具,可以显著提高开发效率和项目稳定性。建议在实际项目中建立规范的版本管理流程,确保团队协作的一致性。
记住以下关键点:
生产环境优先使用 LTS 版本
使用.nvmrc文件管理项目版本
定期更新和维护开发环境
关注安全更新和最佳实践