本文参考:
上一篇文章 npm总结(一)中介绍了npm
的一些基本使用和工作原理相关的内容,本文将在此基础上,介绍npm
在实际应用中的一些命令使用和其他高级使用。
1. npm 常用命令详解
1.1 npm init 引导输出一个package.json
文件
- 语法介绍:调用脚本输出一个初始化的
package.json
文件 - 命令别名:
create
,innit
- 参数介绍:
-
--force
:简写-f
,跳过引导交互,快速生成默认的package.json
文件 -
--yes
:简写-y
,同上 -
--scope
:同npm init
,与无参数时相同,交互生成package.json
文件
1.2 npm install 安装模块
在 npm总结(一)中,已经对其做了详细的介绍和使用,那么下面就再总结一下该命令的使用语法:
- 语法介绍:
-
npm install (with no args, in package dir)
:直接根据应用中的package.json
或package.lock.json
文件来安装项目或模块需要的依赖 -
npm install [<@scope>/]<pkg>
:安装已发布到npm
仓库的包名,默认下载latest
最新发布版 -
npm install [<@scope>/]<pkg>@<tag>
:安装通过tag
标记获取到的版本 -
npm install [<@scope>/]<pkg>@<version>
:安装指定版本的包 -
npm install [<@scope>/]<pkg>@<version range>
:安装通过semver
规范匹配到的版本 -
npm install <folder>
:安装本地包 -
npm install <tarball file>
:安装gzip
压缩文件 -
npm install <tarball url>
:安装可下载到gzip
压缩包的链接 -
npm install <git url>
:安装通过git
链接获取到的包
命令别名:
i
,add
参数介绍:
- 无参数:同
--save-prod
-
--global
:简写-g
,安装全局依赖 -
--save-prod
:同-save
,简写-S
,将依赖信息加入到dependencies
(生产环境的依赖) -
--save-dev
:简写-D
,将依赖信息加入到devDependencies
(开发环境的依赖) -
--save-optional
:简写-O
,将依赖信息加入到optionalDependencies
(可选阶段的依赖) -
--save-exact
:简写-E
,精确安装依赖的版本,依赖信息将加入到dependencies
-
--no-save
:只添加依赖,依赖信息不写入package.json
1.3 npm uninstall 卸载模块
- 语法介绍:卸载指定的依赖
- 命令别名:
un
,unlink
,remove
,rm
,r
- 参数介绍:与
npm install
类似
1.4 npm update 更新模块
- 语法介绍:更新指定的依赖
- 命令别名:
up
,upgrade
1.5 npm outdated 检查模块是否过时
语法介绍:检查依赖是否已经过时,并列出所有已经过时的包
1.6 npm ls 查看安装的模块
- 语法介绍:列出安装的所有依赖
- 命令别名:
list
,la
,ll
- 参数介绍:
-
--global
:简写-g
,查看全局安装的依赖 -
--depth
:直接列出依赖会列出包括其子依赖,输出太厄长了,使用--depth=0
控制,如下图所示:
1.7 npm config 管理npm的配置路径
- 语法介绍:所有
npm
配置参数可在官网查看(npm config)
-
npm config set <key> <value>
:或npm set <key> <value>
,设置或修改某项npm
配置。如通过npm config set proxy=***
设置代理来解决公司内网无法安装npm
依赖,通过npm config set registry="https://registry.npm.taobao.org"
切换npm
仓库源为淘宝镜像来解决无法访问npm
源或下载依赖慢的问题 -
npm config get <key>
:或npm get [<key>],查看某项npm
配置 -
npm config delete <key>
:删除某项npm
配置 -
npm config list [--json]
:查看所有npm
配置 -
npm config edit
:用文本编辑器修改npm
配置
- 命令别名:
c
1.8 npm cache 管理模块缓存
语法介绍:
-
npm cache add
:给一个指定的依赖包添加缓存(该命令主要是npm
内部使用) -
npm cache clean
:清除npm
本地缓存 -
npm cache verify
:验证缓存数据的有效性和完整性,清理垃圾数据
1.9 npm version 查看 npm 版本
命令简写:npm -v
1.10 npm help 查看某条命令的详细帮助
语法介绍:查看npm
或某条命令的详细介绍,如npm help config
,则会在本地生成一个关于config命令使用的HTML文件并在浏览器打开
1.11 npm root 查看依赖包的安装路径
查看npm
全局依赖包路径:npm root -g
1.12 npm run 执行脚本命令
npm run
命令可以自动新建一个shell去执行里面的脚本,关于npm
脚本相关的内容,在 npm总结(一)中已有介绍,本文就列举一些常用的脚本命令:
-
npm run start
:简写npm start
,启动模块 -
npm run build
:生成环境打包部署 -
npm run test
:简写npm test
或npm t
,测试模块 -
npm run stop
:简写npm stop
,停止模块 -
npm run restart
:简写npm restart
,重启模块
1.13 npm 发布包相关命令
-
npm login
:同npm adduser
,登录npm
社区账号,如下图所示:
-
npm publish
:发布npm
包
关于如何发布一个npm
包,可参考文章:从0开始发布一个无依赖、高质量的npm包
2. npm 安装依赖过程中的错误解决
2.1 安装时间长导致安装失败
由于国内防火墙原因,有时候下载npm
包特别慢,还经常下载失败,可以尝试以下方法来解决:
使用
cnpm
替代npm
,通过npm
安装:npm install -g cnpm
,使用时将所有的npm
命令换为cnpm
即可使用
nrm
快速切换npm
仓库源,通过npm
安装:npm install -g nrm
,nrm
命令使用如下图所示:
推荐方式:先使用nrm test
测试仓库源的延迟,然后使用nrm use
命令选择延迟最少的使用,nrm
的作用只是快速切换npm
仓库源,所以使用时还是用npm
命令
2.2 其他未知问题
有时候会碰到一些莫名其妙的问题导致安装依赖失败,可尝试升级node
版本,升级npm
版本,清除npm
缓存:npm cache clean --force
等方法来解决
3. Yarn
3.1 为什么使用 yarn
因为早期npm
有较多的问题,如安装依赖的速度较慢,安装的依赖版本也会不一致而引发一系列的问题,而yarn
正是为了弥补npm
的缺陷而出现的。正如官网介绍的其优点:
极其快速:
Yarn
会缓存它下载的每个包,所以无需重复下载。它还能并行化操作以最大化资源利用率,安装速度之快前所未有特别安全:
Yarn
会在每个安装包被执行前校验其完整性超级可靠:
Yarn
使用格式详尽而又简洁的lockfile
文件 和确定性算法来安装依赖,能够保证在一个系统上的运行的安装过程也会以同样的方式运行在其他系统上
3.2 安装
在windows
上安装yarn
最简单的方法就是使用npm
来安装:npm install -g yarn
,其他方法可参见官网:安装 | Yarn,下面主要介绍一下CentOS
系统上的安装(安装 | Yarn):
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn
yarn --version
3.3 使用
yarn
的使用和npm
十分相似,大部分命令还是相同的,在官网从 npm 迁移中也列出了一些常用命令的比较,如下图所示:
其他的yarn
命令的使用,在官网也有详细的介绍:CLI 介绍 | Yarn
3.4 小结
关于yarn
的使用,本文不做详细介绍,因为官网的文档已经很清晰了,在理解了npm
的基础上,快速阅读下yarn
的文档即可使用yarn
作为你的包管理工具。另外,关于package.json
文件中的字段解释,在yarn
官网(package.json | Yarn)有很详细的解释,很值得去阅读查阅。
那么使用了yarn
就可以完全替代npm
吗,答案是肯定的,虽然官网文档说两者一起使用也是完全可以的,但还是尽量避免这样做。至于选择哪个包管理工具,完全由个人喜好而定,npm
也更新到6
版本了,作为竞争者,自然也不会比yarn
差到哪里去,所以选择一个自己喜欢的工具使用就好。