Node.js的包管理工具及其使用

node.js

一、Node.js的包管理工具的使用

1.1、包管理工具对比

和Node.js版本管理工具一样,Node.js的包管理工具也有很多个,同样先做个对比下:

名称安装方式
特点
npm安装node时会自动同时安装npm,无需额外安装nodejs集成了npm,是nodejs默认的包管理器。npm5之前的版本存在一系列的问题,例如:依赖树结构过长的问题[1]、安装逻辑的问题[2]等等,这些问题导致npm使用过程中很不友好,由于yarn的出现,npm5进行了重大改进[3],npm6加入了缓存,速度有了进一步提升,发展到现在npm的使用体验上有了很大的提升。
cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm是阿里巴巴为了提升国内下载速度定制的命令行工具,是一个完整 npmjs.org 国内镜像
yarn1. 使用npm工具安装模块:
npm install yarn -g
2.通过安装包独立安装(推荐):
- Windows:
点击下载安装包安装
- Ubuntu:
sudo apt update && sudo apt install yarn
3.其他系统安装方式可访问官网了解详情:
- Yarn英文官网
- Yarn中文官网
由于npm存在的一些问题,使用体验不太好,yarn应运而生,yarn引入yarn.lock文件来管理依赖版本问题,保证每次安装都是一致的,并提供了离线模式,安装时缓存加并行下载速度得到了显著的提升,使用体验极佳。

1.2、包管理器常用命令

1.2.1、npmyarn管理器常用命令对比

npm VS yarn

Commandnpmyarn
安装依赖npm installyarn install
安装包npm install [package]yarn add [package]
安装开发包npm install --save-dev [package]yarn add --dev [package]
卸载包npm uninstall [package]yarn remove [package]
卸载开发包npm uninstall --save-dev [package]yarn remove [package]
更新npm updateyarn upgrade
更新包npm update [package]yarn upgrade [package]
全局安装包npm install --global [package]yarn global add [package]
全局卸载包npm uninstall --global [package]yarn global remove [package]
初始化项目npm inityarn init
运行脚本npm run [script]yarn run [script]
运行测试脚本npm testyarn test
登录/登出npm login/logoutyarn login/logout
链接/取消链接包npm link/unlink [package]yarn link/unlink [package]
发布软件包npm publishyarn publish
清除全局缓存npm cache cleanyarn cache clean
设置配置npm config set <key> <value>yarn config set <key> <value>
删除配置npm config delete <key>yarn config delete <key>

1.2.1、其他命令

设置镜像源

1
2
3
4
5
6
// npm设置淘宝源和官方源
npm config set registry http://registry.npm.taobao.org/
npm config set registry https://registry.npmjs.org/
// yarn设淘宝源和官方源
yarn config set registry http://registry.npm.taobao.org/
yarn config set registry https://registry.npmjs.org/

代理配置

1
2
3
4
5
6
7
8
9
10
// npm代理配置
npm config set proxy http://username:password@server:port
npm confit set https-proxy http://username:password@server:port
// 或者编辑用户目录下的~/.npmrc file
proxy=http://username:password@host:port
https-proxy=http://username:password@host:port

// yarn代理配置
yarn config set proxy http://username:password@host:port
yarn config set https-proxy http://username:password@host:port

取消代理

1
2
3
4
5
6
7
// npm取消代理
npm config delete proxy
npm config delete https-proxy

// yarn取消代理
yarn config delete proxy
yarn config delete https-proxy

附:


  • [1] npm 2依赖树结构过长的问题

    点击显/隐

    npm2版本时期,安装每一个包所依赖的所有依赖项,如果依赖的数据层级很多,那么依赖树结构会很长,这种情况对于基于Unix的操作系统来说影响不大,但是在Windows下很多程序无法处理超过260个字符的文件路径名,这就会导致致命的错误,为了解决这个问题,npm 3采用了扁平依赖关系树,也就是将依赖包的目录层级从嵌套变到扁平化。

  • [2] 安装逻辑的问题

    点击显/隐

    npm的早期版本,无法并行下载,也就是说npm在安装依赖的过程中,同一个时刻只能有一个模块在下载、解析、安装,这很大程度上影响了安装依赖的速度。

  • [3] npm5进行了重大改进

    点击显/隐

    npm5引入离线缓存,提高了安装速度,也引入了package-lock.json 文件增强了版本控制。