Node.js 版本管理、NPM 命令、与 NVM 完全指南

分类: 365不让提款 发布时间: 2025-12-26 04:20:39
作者: admin 阅读: 4580 | 点赞: 935
Node.js 版本管理、NPM 命令、与 NVM 完全指南

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 --save-dev

npm i -D # 简写

# 安装全局包

npm install -g

# 安装指定版本

npm install @1.2.3

npm install @latest

npm install @beta

# 从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 --save-dev

# 卸载全局包

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 version

npm show versions # 查看所有版本

包信息查询

搜索包

bash

复制代码

# 搜索包

npm search

npm s # 简写

# 在线搜索(更详细)

npm search --searchlimit=20

npm search --json # JSON格式输出

查看包信息

bash

复制代码

# 查看包详细信息

npm info

npm view # 别名

npm show # 别名

# 查看特定字段

npm view version

npm view description

npm view dependencies

npm view repository

npm view homepage

# 查看包的所有版本

npm view versions

npm view time # 查看发布时间

# 查看包的文档

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 -g

# 以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 --silent

npm run -s

# 传递参数给脚本

npm run -- --arg1 --arg2

生命周期脚本

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

# 项目级配置文件

/.npmrc

# 全局配置文件

/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 --force # 撤销所有版本

安全与审计

安全审计

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文件管理项目版本

定期更新和维护开发环境

关注安全更新和最佳实践