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 nrmnrm命令
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
| 特性 | npm | yarn | pnpm |
|---|---|---|---|
| 安装速度 | 较慢 | 快 | 最快 |
| 磁盘空间 | 占用多 | 占用多 | 占用少 |
| 锁文件 | package-lock.json | yarn.lock | pnpm-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 --forceQ: 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>&1Q: 安装时出现错误,如何获取更多调试信息?
A: 使用以下命令:
sh
npm install --debug # 显示调试信息
npm install --timing # 显示时间统计
npm cache verify # 验证缓存完整性