1、npm
1.1 npm简介
###### 概念: Node package manger — node管理工具
npm由三个独立的部分组成:
网站网站是开发者查找包(package)、设置参数以及管理npm使用体验的主要途径
注册表(registry)注册表是一个巨大的数据库,保存了每个包(package)的信息
命令行工具(CLI)CLI通过命令行或终端运行。开发者通过CLI与npm打交道
1.2 npm安装
官网:nodejs.org/zh-cn (下载的是长期支持版本),安装了node之后,npm也就安装了。
(1)测试是否安装好:
(2)更改镜像
因为npm的地址是美国的,下载速度异常慢,把它的地址改为淘宝的,就可以解决(第一次安装的时候需要);
(1)查看npm的镜像源 npm config get registry
(2)把镜像源更改为淘宝镜像:npm config set registry=https://registry.npmmirror.com/
(3)安装成功后再查看npm 的镜像源
原始npm 镜像 与 切换的淘宝镜像
npm config set registry https://registry.npmjs.org/
npm config set registry https://registry.npmmirror.com/
1.3 基于npm进行模块管理
有两种方式用来安装npm包:本地安装和全局安装
npm install XXX 把模块安装在当前项目当(最后生成这样的一个文件夹 — node_modules)
npm install 'package'
(1)相关配置:
- -g —为全局安装
- –save-dev( -D )—开发阶段的依赖
- –save( -S ) —生产阶段的依赖
(2)常见命令
-
npm init -y初始化当前项目的配置依赖清单。生成一个package.json文件,里面有着你安装的第三方模块,还有着你的npm项目信息,最大的用处就是上传到git托管服务器,忽略掉node_modules包!
-
npm install把环境,按照清单按照所需的模块 -
npm root -g查看全局安装模块的目录 -
npm uninstall xxx卸载! -
npm run build(serve)—执行命令!
npm 使用一个名为package.json的文件,用户可以通过npm install --save命令把项目里所有的依赖项保存在这个文件里
参考中文文档:www.npmjs.com.cn/
2、yarn(针对的是Yarn 2 版本)
2.1 yarn简介
Yarn 是一个软件包管理器,还可以作为项目管理工具。无论是小型项目还是大型单体仓库(monorepos),无论是业余爱好者,还是企业用户,Yarn都能满足需求。
代码通过 软件包(package) 的方式被共享,一个软件包里包含了所有需要共享的代码,以及一个描述软件包信息的文件 package.json(叫做 清单)
2.2 yarn安装
全局安装
Yarn 2 及更高版本应按项目管理。别担心,改变很小!只需确保首先在全局安装 Yarn 二进制文件即可,我们将使用该二进制文件来生成本地的二进制文件:
npm install -g yarn
按项目安装
- 全局安装Yarn 的最新版本:
npm install -g yarn, - 进入你的项目目录:
cd ~/path/to/project, - 运行以下命令:
yarn set version berry,
“Berry” 是 Yarn 2 发布序列的代号,同时也是我们的 代码仓库 的名称!
如果以后要将 Yarn 更新到最新版本,请运行:
yarn set version latest
Yarn 将从我们的网站下载最新的二进制文件,并将其安装在您的项目中。然后,不要忘记更新依赖项并提交更新结果!
用法
初始化一个新项目
yarn init
安装所有依赖项
yarn install
添加依赖项
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
将依赖项添加到不同的依赖类别中
yarn add [package] --dev #dev dependencies
yarn add[package] --peer #peer dependencies
更新依赖项
yarn up [package]
yarn up [package]@[version]
yarn up [package]@[tag]
删除依赖项
yarn remove [package]
更新Yarn 本体
yarn set version latest
yarn set version from sources
参考中文文档:www.yarnpkg.cn/
3、cnpm
3.1 cnpm 简介
cnpm 是阿里巴巴推出的包管理工具,安装之后默认会使用registry.npmmirror.com 这个镜像源。
它的安装命令和 npm 基本一致,通过 cnpm i 或者 cnpm install 命令来安装插件,当然在使用 cnpm 前必须先通过npm安装
3.2 安装
npm install -g cnpm
国内安装:
$ npm install cnpm -g --registry=registry.npm.taobao.org
构建私有 npm
$ npm install cnpm -g
# then alias it
`$ alias mynpm='cnpm --registry=http://registry.npm.example.com \
--registryweb=http://npm.example.com \
--userconfig=$HOME/.mynpmrc'`
查看安装版本:
cnpm -v
3.3 注意
cnpm 不生成 lock 文件,也不会识别项目中的lock文件,如果是多人开发,还是建议使用npm或者其他包管理工具安装插件
4、pnpm
4.1 特点
- 快速:pnpm是同类工具速度的2倍
- 高效:node_modules中的所有文件均链接自单一存储位置
- 支持单体仓库:pnpm 内置了对单个源码仓库中包含多个软件包的支持
- 权限严格:pnpm 创建的 node_modules 默认并非扁平结构,因此代码无法对任意软件包进行访问
4.2 安装
使用npm
npm install -g pnpm
// 使用Homebrew 安装pnpm
brew install pnpm
// 使用Scoop 安装pnpm:
scoop install nodejs-lts pnpm
兼容性
以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本
4.3 用法
与npm 的差异
-
与 npm 不同,pnpm 会验证所有参数。例如,
pnpm install --target_arch x64将运行 失败,由于--target_arch不是一个有效的pnpm install参数。 -
但是,某些依赖项可能会使用以
npm_config_开头的环境变量,该环境变量 是可以通过 CLI 参数添加的。在这种情况下,假定有如下参数:- 直接设置环境变量:
npm_config_target_arch=x64 pnpm install - 利用 --config. 前缀强制设置参数:
pnpm install --config.target_arch=x64
- 直接设置环境变量:
参考官网 www.pnpm.cn/
5、总结
5.1 npm特点
(1)npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。
(2)同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。
“5.0.3”表示安装指定的5.0.3版本,“~5.0.3”表示安装5.0.X中最新的版本,“^5.0.3”表示安装5.X.X中最新的版本。这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。
(3)安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。
5.2 yarn特点
“Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,是为了弥补 npm 的一些缺陷而出现。
- yarn在下载和安装依赖包采用的是多线程的方式,而npm是单线程的方式执行,速度上就拉开了差距
- yarn会在用户本地缓存已下载过的依赖包,优先会从缓存中读取依赖包,只有本地缓存不存在的情况才会采取远端请求的方式;反观npm则是全量请求,速度上再次拉开差距
- yarn把所有的依赖躺平至同级,有效的减少了相同依赖包重复下载的情况,加快了下载速度而且也减少了node_modules的体积;反观npm则是严格的根据依赖树下载并放置到对应位置,导致相同的包多次下载、node_modules体积大的问题
5.3 cnpm特点
(1) cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm。
(2) npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,于是淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
(3)cnpm将所有项目下载的包收拢在自己的缓存文件夹中,通过软链接把依赖包放到对应项目的node_modules中
5.4 pnpm特点
(1) pnpm运行起来非常的快,超过了npm和yarn
(2) pnpm采用了一种巧妙的方法,利用硬链接和符号链接来避免复制所有本地缓存源文件,这是yarn的最大的性能弱点之一
(3) 使用链接并不容易,会带来一堆问题需要考虑。
(4) pnpm继承了yarn的所有优点,包括离线模式和确定性安装
(5) 一旦安装完 pnpm 之后,就无需使用其它软件包管理器来更新 pnpm 了。 你可以让 pnpm 自己来更新自己,如下所示:pnpm add -g pnpm
以下 是一个与 npm 等价命令的对照表,帮助你快速入门:
当你使用一个未知命令时,pnpm 将会查找和该命令具有相同名称的脚本, 因此,pnpm run lint 和 pnpm lint 是一样的。如果没有相同名称的脚本的话, 那么 pnpm 将按照 shell 脚本的形式执行该命令,所以你可以执行类似 pnpm eslint (see pnpm exec) 指令的命令。
5.5 nvm与nrm
一句话概括:
- 1.nvm是管理多个node版本的
- 2.nrm是管理npm源的,为了下载包更快
通过官网下载最新版的 node 之后,nvm 也默认安装了。
nvm
管理node版本的工具,例如在一台电脑上已经安装了node10以上,但有的项目需要node版本在8,由于要维护多个项目,卸载再安装又有很多麻烦和错误,使用nvm给前端同学带来了福利。
nvm install 8.10.0 //安装ndoe 8.10.0为node版本
nvm list //查看nvm管理的node版本列表,正在使用的版本在列表前有星号标记
nvm use 8.10.0 //使用node指定版本
nvm uninstall 8.10.0 //卸载指定node版本
nrm
使用nrm来切换npm源
npm install -g nrm // 全局安装nrm
nrm ls // 列出可用的源
nrm use taobao // 通过 nrm use指令来切换不同的源
nrm add 别名 源地址 // 添加源
转自:
blog.csdn.net/qq_59012240… blog.csdn.net/weixin_5379… www.jianshu.com/p/24193e9ad…