Skip to content

npm 常用命令

目录

简介

npm (Node Package Manager) 是跟随 Node.js 一起安装的包管理器。常见的使用场景有以下几种:

  • 允许用户从 npm 服务器下载别人编写的第三方包到本地使用
  • 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用
  • 允许用户将自己编写的包或命令行程序上传到 npm 服务器供别人使用
  • 管理项目依赖和脚本

基础命令

检测版本

sh
npm -v          # 显示npm版本号
npm version     # 显示npm、node和系统信息

初始化项目

sh
npm init                    # 交互式创建package.json
npm init -y                 # 使用默认值快速创建package.json
npm init <package-name>     # 基于某个包创建项目

package.json 用来描述项目中用到的模块、脚本和其他项目信息

包管理命令

安装模块

sh
# 基础安装
npm install                 # 安装package.json中定义的所有依赖,简写 npm i
npm i <package-name>        # 安装指定包

# 全局安装
npm i <package-name> -g     # 全局安装包

# 开发依赖
npm i <package-name> --save-dev    # 简写 -D,安装为开发依赖
npm i <package-name> -D            # 同上

# 生产依赖(npm 5+ 默认行为)
npm i <package-name> --save        # 简写 -S,安装为生产依赖
npm i <package-name> -S            # 同上

# 精确版本安装
npm i <package-name> --save-exact  # 安装精确版本,不使用 ^ 符号

# 安装多个包
npm i <package1> <package2> <package3>

# 安装指定版本
npm i <package-name>@<version>
npm i <package-name>@latest        # 安装最新版本
npm i <package-name>@next          # 安装预发布版本

# 日志级别控制
npm i <package-name> --loglevel=error    # 只显示错误信息
npm i <package-name> --loglevel=warn     # 显示警告和错误
npm i <package-name> --loglevel=info     # 显示信息、警告和错误(默认)
npm i <package-name> --loglevel=verbose  # 显示详细信息
npm i <package-name> --loglevel=silly    # 显示所有信息,包括调试信息

# 简写形式
npm i <package-name> --silent            # 静默模式,不显示进度条
npm i <package-name> --quiet             # 安静模式,只显示错误
npm i <package-name> --verbose           # 详细模式
npm i <package-name> --progress          # 显示进度条(默认)
npm i <package-name> --no-progress       # 隐藏进度条

# 调试模式
npm i <package-name> --debug             # 显示调试信息
npm i <package-name> --timing            # 显示安装时间统计
npm i <package-name> --json              # 以JSON格式输出日志

查看包信息

sh
# 查看已安装的包
npm ls                       # 查看本地项目安装的包
npm ls -g                    # 查看全局安装的包
npm ls <package-name>        # 查看指定包的版本

# 查看包信息
npm view <package-name>      # 查看包的package.json信息
npm info <package-name>      # 同上
npm show <package-name>      # 同上

# 查看包的详细信息
npm view <package-name> dependencies    # 查看包的依赖关系
npm view <package-name> repository.url  # 查看包的源码地址
npm view <package-name> engines         # 查看包要求的node版本
npm view <package-name> versions        # 查看包的所有版本

更新模块

sh
# 更新包
npm update <package-name>    # 更新本地包
npm update -g <package-name> # 更新全局包
npm update -g                # 更新所有全局包

# 检查过时的包
npm outdated                 # 检查本地过时的包
npm outdated -g              # 检查全局过时的包
npm outdated -g --depth=0    # 只检查顶级包

卸载模块

sh
npm uninstall <package-name>     # 卸载本地包,简写 npm un
npm un <package-name>            # 同上
npm remove <package-name>        # 同上

npm uninstall -g <package-name>  # 卸载全局包

缓存管理

sh
npm cache clean --force      # 强制清空缓存(推荐)
npm cache clean -f           # 同上
npm cache verify             # 验证缓存完整性

脚本命令

运行脚本

sh
npm run <script-name>        # 运行package.json中定义的脚本
npm run                     # 列出所有可用的脚本
npm start                   # 运行start脚本(npm run start的简写)
npm test                    # 运行test脚本(npm run test的简写)
npm stop                    # 运行stop脚本
npm restart                 # 运行restart脚本

常用脚本示例

json
{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "webpack --mode production",
    "test": "jest",
    "lint": "eslint src/",
    "format": "prettier --write src/"
  }
}

配置命令

查看和设置配置

sh
# 查看配置
npm config list              # 查看所有配置
npm config get <key>         # 查看指定配置项
npm config get registry      # 查看当前镜像源

# 设置配置
npm config set <key> <value> # 设置配置项
npm config set registry https://registry.npmjs.org/  # 设置官方源

# 删除配置
npm config delete <key>      # 删除配置项

常用配置项

sh
# 设置镜像源
npm config set registry https://registry.npmjs.org/     # 官方源
npm config set registry https://registry.npmmirror.com/ # 淘宝源(新)

# 设置代理
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

# 设置超时时间
npm config set timeout 60000

发布相关

登录和发布

sh
npm login                    # 登录npm账号
npm logout                   # 退出登录
npm whoami                   # 查看当前登录用户

npm publish                  # 发布包
npm publish --access public  # 发布为公共包
npm unpublish <package>@<version>  # 撤销发布(72小时内)

包管理

sh
npm search <keyword>         # 搜索包
npm view <package-name>      # 查看包信息
npm outdated                 # 检查过时的包

镜像源管理

使用nrm管理镜像源

nrm (npm registry manager) 是npm的镜像源管理工具,可以快速切换不同的npm源。

安装nrm

sh
npm install -g nrm

nrm命令

sh
nrm ls                      # 查看可用的源(*号表示当前使用的源)
nrm use <registry>          # 切换到指定源
nrm add <registry> <url>    # 添加自定义源
nrm del <registry>          # 删除源
nrm test <registry>         # 测试源的响应时间
nrm help                    # 查看帮助
nrm home <registry>         # 跳转到指定源的官网

常用镜像源

sh
nrm use npm                 # 官方源
nrm use taobao              # 淘宝源
nrm use cnpm                # 中国npm源
nrm use yarn                # Yarn源

直接设置镜像源

sh
# 设置淘宝镜像源(推荐)
npm config set registry https://registry.npmmirror.com/

# 设置官方源
npm config set registry https://registry.npmjs.org/

# 临时使用镜像源
npm install <package> --registry=https://registry.npmmirror.com/

日志和调试

查看npm日志

sh
# 查看npm日志文件
npm logs                    # 查看当前包的日志
npm logs <package-name>     # 查看指定包的日志

# 查看全局日志
npm logs -g                 # 查看全局安装的包日志

# 日志文件位置
# macOS/Linux: ~/.npm/_logs/
# Windows: %AppData%/npm-cache/_logs/

日志级别说明

sh
# 日志级别从低到高
error     # 只显示错误信息
warn      # 显示警告和错误
info      # 显示信息、警告和错误(默认)
verbose   # 显示详细信息
silly     # 显示所有信息,包括调试信息

实用日志命令

sh
# 查看npm配置
npm config list --loglevel=verbose

# 查看安装过程详细信息
npm install --loglevel=verbose

# 查看错误详情
npm install --loglevel=error

# 保存日志到文件
npm install --loglevel=verbose > install.log 2>&1

# 查看特定包的安装信息
npm view <package-name> --json

使用技巧

解决安装问题

sh
# 清除缓存后重新安装
npm cache clean --force
npm install

# 删除node_modules和package-lock.json后重新安装
rm -rf node_modules package-lock.json
npm install

# 使用--legacy-peer-deps解决依赖冲突
npm install --legacy-peer-deps

版本管理

sh
# 查看已安装的精确版本
npm ls <package-name>

# 安装精确版本
npm install <package-name> --save-exact

# 更新到最新版本
npm install <package-name>@latest

安全相关

sh
# 检查安全漏洞
npm audit                   # 检查依赖中的安全漏洞
npm audit fix               # 自动修复安全漏洞
npm audit fix --force       # 强制修复(可能破坏依赖)

# 查看包信息
npm view <package-name> homepage    # 查看包主页
npm view <package-name> bugs        # 查看问题反馈地址

现代包管理工具对比

npm vs yarn vs pnpm

特性npmyarnpnpm
安装速度较慢最快
磁盘空间占用多占用多占用少
锁文件package-lock.jsonyarn.lockpnpm-lock.yaml
离线模式支持支持支持
工作空间支持支持原生支持

迁移建议

sh
# 从npm迁移到yarn
yarn import                  # 从package-lock.json生成yarn.lock

# 从npm迁移到pnpm
pnpm import                  # 从package-lock.json生成pnpm-lock.yaml

常见问题

Q: 为什么安装很慢?

A: 可以切换到国内镜像源:

sh
npm config set registry https://registry.npmmirror.com/

Q: 如何处理依赖冲突?

A: 使用以下命令:

sh
npm install --legacy-peer-deps
# 或者
npm install --force

Q: package-lock.json的作用?

A: 锁定依赖的精确版本,确保团队成员使用相同的依赖版本。

Q: 如何查看包的详细信息?

A: 使用以下命令:

sh
npm view <package-name>
npm info <package-name>

Q: 如何查看npm安装的详细日志?

A: 使用以下命令:

sh
npm install --loglevel=verbose    # 显示详细信息
npm install --loglevel=silly      # 显示所有信息
npm logs                          # 查看历史日志

Q: 如何保存安装日志到文件?

A: 使用重定向:

sh
npm install --loglevel=verbose > install.log 2>&1

Q: 安装时出现错误,如何获取更多调试信息?

A: 使用以下命令:

sh
npm install --debug               # 显示调试信息
npm install --timing              # 显示时间统计
npm cache verify                  # 验证缓存完整性

相关资源

最近更新