NPM 常用命令介绍

模块管理

NPM 安装与卸载模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 全局安装
$ npm install xxxx -g

# 局部安装,且更新package.json文件
$ npm install xxxx --save

# 卸载指定模块
$ npm uninstall xxxx

# 卸载全局模块
$ npm uninstall xxxx -g

# 查看模块的最新版本号
$ npm view xxxx version

# 查看模块的所有版本号
$ npm view xxxx versions

NPM 检查模块更新

1
2
3
4
5
6
7
8
9
10
11
# 全局安装检查更新的模块
$ npm install npm-check-updates -g

# 检查可更新的模块
$ npm-check-updates

# 更新所有模块,且更新package.json文件中的依赖包到最新版本(企业项目开发切忌一次性全部更新)
$ npm-check-updates -u

# 更新指定的模块,且更新package.json文件(与模块的安装操作没有本质区别,只是指定了新的版本号),如果执行失败可尝试删除package-lock.json文件后再更新
$ npm install xxxx@0.1.9 --save

NPM 查看已安装的模块

查看局部已安装的模块,--depth 参数表示深度

1
$ npm list --depth 0

查看全局已安装的模块,--depth 参数表示深度

1
$ npm list -g --depth 0

代理设置

NPM 设置代理

1
2
3
4
5
6
7
8
9
10
# 设置代理与仓库源
$ npm config set proxy=http://127.0.0.1:1080
$ npm config set registry=http://registry.npmjs.org

# 关于Https,若上面使用了https开头的仓库源,此时需要额外设置https_proxy参数,反则不需要设置
$ npm config set https-proxy http://127.0.0.1:1080

# 取消代理
$ npm config delete proxy
$ npm config delete https-proxy

权限配置

解决 NPM 安装模块的权限问题

NPM 出于安全考虑不支持以 root 用户运行,即使用 root 用户身份运行了,NPM 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。这样的话如果脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),程序就会崩掉。为了避免这种情况,要么按照 NPM 的规矩来,专门建一个用于运行 npm 命令的高权限用户;要么加 --unsafe-perm 参数,这样就不会切换到 nobody 用户上,运行时是哪个用户就是哪个用户,即使是 root 用户。

1
$ npm install --unsafe-perm=true --allow-root

NPM 镜像加速

在使用 NPM 的过程中经常会遇到无法下载包的问题,这里整理了几种 NPM 使用国内镜像加速的方法。

淘宝镜像源

1
2
3
4
5
# 配置淘宝镜像源
$ npm config set registry https://registry.npm.taobao.org

# 验证配置是否生效
$ npm config get registry

华为云镜像源

1
2
3
4
5
# 配置华为镜像源
$ npm config set registry https://mirrors.huaweicloud.com/repository/npm/

# 验证配置是否生效
$ npm config get registry

使用 CNPM 替代 NPM

1
2
3
4
5
# 全局安装CNPM
# npm install -g cnpm --registry=https://registry.npm.taobao.org

# 安装模块
$ cnpm install xxx

依赖管理

查看依赖树

  • 查看整棵依赖树,可以指定树的深度
1
$ npm list --depth=5