常用 npm 命令

包管理

命令 含义
npm init -y 创建 package.json 文件
npm install 或 npm i 安装 package.json 中的所有内容
npm install –production 安装 package.json 中的所有内容
(除了 devDependecies)
npm install lodash 安装一个包
npm install –save-dev lodash 安装为 devDependency
npm install –save-exact lodash 准确安装
npm install @scope/package-name 安装一个作用域的公共包
npm install @ 使用 dist-tags 安装包
npm install -g 全局安装包
npm uninstall 卸载包
npm uninstall -g 全局卸载包

安装包

命令 含义
npm i package 安装 NPM 包package
npm i package@latest 指定package版本为最新
npm i package@3.0.0 指定package版本 3.0.0
npm i package@”>=1 <2.0” 指定package版本范围
npm i @org/package @org范围内的 NPM 包package
npm i user/repo GitHub,安装user/repo下的包
npm i user/repo#master GitHub,安装user/repo下的包
npm i github:user/repo GitHub,安装user/repo下的包
npm i gitlab:user/repo GitLab,安装user/repo下的包
npm i /path/to/repo 绝对路径
npm i ./archive.tgz 压缩包
npm i https://site.com/archive.tgz 通过 HTTP 压缩包
~~~~~~~~~~ 安装依赖的可用参数
-P, –save-prod 包将出现在您的依赖项中,这是默认值 (npm v8),除非存在 -D 或 -O
-D, –save-dev 包会出现在你的 devDependencies 中
-O, –save-optional 包将出现在您的 optionalDependencies 中
–no-save 防止保存到依赖项
-E, –save-exact 依赖项将使用精确的版本进行配置,而不是使用 npm 的默认 semver 范围运算符
-B, –save-bundle 依赖项也将添加到您的 bundleDependencies 列表中

注:

  • 命令 npm i 是 npm install 的别名

列举

命令 含义
npm list 列出此软件(目录)中所有依赖项的已安装版本
npm list -g –depth 0 列出所有全局安装包的安装版本
npm view 列出此软件中所有依赖项的最新版本
npm outdated 仅列出此软件中已过时的依赖项

缓存

命令 含义
npm cache add <package-spec><folder><tarball url><name>@<version> 将指定的包添加到本地缓存
npm cache clean [] 删除缓存文件夹中的所有数据
npm cache ls [] 查看现有的 npm 包缓存,如果加上 path 参数,则查看该路径下的文件
npm cache verify 验证缓存文件夹的内容,垃圾收集任何不需要的数据,并验证缓存索引和所有缓存数据的完整性

注:

  • 用于添加、列出或清理 npm 缓存文件夹

更新

命令 含义
npm version 要更改 package.json 中的版本号
npm update 更新生产包
npm update –dev 更新开发包
npm update -g 更新全局包
npm update lodash 更新 lodash 包

查看信息

命令 含义
npm view versions 查看 package 的所有版本信息
npm view version 查看 package 的最新的版本信息
npm view dependencies 查看包的依赖关系

杂项

命令 含义
npm owner add USERNAME PACKAGENAME 将某人添加为所有者
npm ls 列出包
npm deprecate PACKAGE@”< 0.2.0” “critical bug fixed in v0.2.0” 向安装旧版本软件包的用户添加警告(弃用)
npm update [-g] PACKAGE 更新所有包或选定的包
npm outdated [PACKAGE] 检查过时的包
npm info 查看每个模块的具体信息

发布、更新与可见

命令 含义
npm publish 第一次需要指定公开参数。后续发布公开包到 npmjs.org
npm publish –access public 同上
npm publish –access public –tag previous 同上
npm access restricted 将公共包设为私有
npm access public 公开私有包
npm owner add 授予私有包访问权限
npm unpublish -f 取消指定版本
npm unpublish @ 同上
npm init (如同 `npx )
npm init <@scope> (如同 npx <@scope>/create)

注:

  • npm init 别名:create, innit,例:
命令 含义
npm init foo npm exec create-foo
npm init @usr/foo npm exec @usr/create-foo
npm init @usr npm exec @usr/create
npm init @usr@2.0.0 npm exec @usr/create@2.0.0
npm init @usr/foo@2.0.0 npm exec @usr/create-foo@2.0.0
  • 如果您取消发布整个包,则必须在 24 小时后才能发布该包的任何新版本

转移

命令 含义
npm owner add 新维护者接受邀请
npm owner rm 删除维护者
npm owner add –otp=123456 写入启用了双因素身份验证

使用 nrm 管理 registry 地址

命令 含义
npm install -g nrm 下载安装 nrm 包
nrm ls 查看 registry 列表
nrm add npm http://registry.npmjs.org 或 nrm add taobao https://registry.npm.taobao.org 添加 registry 地址
nrm use npm 或 nrm use taobao 切换 npm registry 地址为上面的taobaonpm

镜像源修改

重置 npm 镜像:

1
npm config set registry http://registry.npmjs.org

临时修改 npm 镜像:

1
npm i --registry=http://registry.npmjs.org

保存修改 npm 镜像

1
2
npm config set registry https://registry.npm.taobao.org 
npm info underscore

查看镜像的配置结果:

1
npm config get registry

npm install 后缀含义

npm install XXX

npm 5 开始通过 npm install XXX 什么都不加,和 npm install XXX --save 一样,都是局部安装并会把模块自动写入 package.json 中的 dependencies 里。安装模块到项目目录下,本地安装会将安装包放在./node_modules

  • 会把 moudule_name 包安装到 node_modules 目录中
  • 不会修改 package.json
  • 之后运行 npm i 命令时,不会自动安装 moudule_name

npm install XXX -s

相当于 npm install XXX --save。这样安装是将模块安装到项目目录下,并在package.json文件的dependencie(生产环境下的依赖管理)写入依赖。如果你将要安装的这个库是用来构建你的项目的,比如echartselement-ui,是实际在项目中起作用,就可以使用-s来安装。

  • 会把 moudule_name 包安装到 node_modules 目录中
  • 会在 package.json 的 dependencies 属性下添加 moudule_name
  • 之后运行 npm i 命令时,会自动安装 moudule_name 到 node_modules 目录中
  • 之后运行 npm i –production 或者注明 NODE_ENV 变量值为 production 时,会自动安装 msbuild 到 node_modules 目录中,即是在线上环境运行时会将包安装

npm install XXX -d

相当于 npm install XXX --save-dev。这样安装是将模块安装到项目目录下,局部安装,并在package.json文件的 devDependencies (开发环境下的依赖管理)写入依赖。如果你安装的库是用来打包的、解析代码的,比如 webpackbabel,就可以用-d来安装。在项目上线后,这些库就没用了。

  • 会把 moudule_name 包安装到 node_modules 目录中
  • 会在 package.json 的 devDependencies 属性下添加 moudule_name
  • 之后运行 npm i 命令时,会自动安装 moudule_name 到 node_modules 目录中
  • 之后运行 npm i –production 或者注明 NODE_ENV 变量值为 production 时,不会自动安装 moudule_name 到 node_modules 目录中

npm install XXX -g

将模块安装到全局,安装一次过后,其他地方也可使用。具体安装到磁盘哪个位置要看 npm config

  • 安装模块到全局,不会在项目 node_modules 目录中保存模块包。
  • 不会将模块依赖写入 devDependencies 或 dependencies 节点。
  • 运行 npm i 初始化项目时不会下载模块。

使用原则:
devDependencies 节点下的模块是我们在开发时需要用的,比如项目中使用的 gulp ,压缩 css、js 的模块。这些模块在我们的项目部署后是不需要的,所以我们可以使用–save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用–save 的形式安装。

总结为一句话:运行时需要用到的包使用––save,否则使用––save-dev

报错与换源

https://www.jianshu.com/p/3fd7d90db01a

解决办法:

  1. 执行:

    1
    2
    npm config get proxy
    npm config get https-proxy

    如果返回值不为 null,继续执行:
    (这一步很重要,一定要保证两个命令的返回值都为 null, 话说回来,应该出现这个错误这两个返回值有不为 null 的)

    1
    2
    npm config set proxy null
    npm config set https-proxy null
  2. 执行:

1
npm install -g cnpm --registry=https://registry.npmmirror.com

1
npm config set registry http://registry.npmmirror.com/

安装 yarn

Yarn 是 facebook 发布的一款取代 npm 的包管理工具,还可以作为项目管理工具。无论你是小型项目还是大型单体仓库(monorepos),无论是业余爱好者还是企业用户,Yarn 都能满足你的需求。

全局安装 yarn:

1
npm install yarn -g

使用npm init初始化后,安装依赖可使用下面这段命令:

1
yarn install

卸载 yarn

1
npm uninstall -g yarn

参考:

https://quickref.me/zh-CN/docs/npm.html
https://segmentfault.com/a/1190000014117849