(浅谈)npm 、cnpm、yarn 、pnpm、CDN之间的差异

4,249 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在 前端工程化 十分普及的今天,可以说几乎所有你要用到的插件,都可以在 npmjs 上搜到,除了官方提供的包管理器 npm ,我们也有很多种安装方式选择。

通过 npm 安装

npmjs是Node.js自带的包管理器,大家基本都是通过npm i 或者npm install 这两个命令来安装npm包,如果觉得安装的太慢的话,可以通过安装淘宝镜像来改善问题 1、打开命令行,输入以下命令:

老版

npm install cnpm -g --registry=https://registry.npm.taobao.org

新版

npm config set registry https://registry.npmmirror.com

2、检测是否安装成功

 输入命令符: cnpm -v

3、如果安装成功会出现下图(新版)

image.png

4、删除

npm config rm registry

5、npm 的 lock 文件是 package-lock.json,可在此文件查看安装那些插件。

TIP

如果你之前已经绑定过 npm.taobao 系列域名,也请记得更换成 npmmirror 这个新的域名!

随着新的域名已经正式启用,老 npm.taobao.org 和 registry.npm.taobao.org 域名在 2022 年 05 月 31 日零时后不再提供服务。

通过 cnpm 安装

cnpm 是阿里巴巴推出的包管理工具,安装之后默认会使用 https://registry.npmmirror.com 这个镜像源。 它的安装命令和npm基本一致,通过 cnpm i 或者cnpm install命令来安装插件,当然在使用cnpm前必须先通过npm安装

# 全局安装
npm install -g cnpm

# 或者
# npm install -g cnpm --registry=https://registry.npmmirror.com

注意: cnpm 不生成 lock 文件,也不会识别项目中的lock文件,如果是多人开发,还是建议使用npm或者其他包管理工具安装插件。

通过 yarn 安装

yarn 也是一个常用的包管理工具,和 npm 类似, npmjs 上的包,也会同步到 yarnpkg 。也是需要借助npm全局安装才可以使用:

npm install -g yarn

但是安装命令上会有点不同, yarn 是用 add 代替 install ,用 remove 代替 uninstall ,例如:

# 安装单个包
yarn add vue-vuex

# 安装全局包
yarn global add typescript

# 卸载包
yarn remove vue-router

而且在runtime的时候,可以直接用 yarn 来代替 npm run ,例如 yarn start 相当于 npm run start 。

yarn 默认绑定的是 https://registry.yarnpkg.com 的下载源,如果包的下载速度太慢,也可以配置镜像源,但是命令有所差异:

# 查看镜像源
yarn config get registry

# 绑定镜像源
yarn config set registry https://registry.npmmirror.com

# 删除镜像源(注意这里是 delete )
yarn config delete registry

注意:yarn 的 lock 文件是 yarn.lock,和npm管理器一样,可以在此包查看插件安装。

通过 pnpm 安装

pnpm 是包管理工具的一个后来才兴起的管理器,原文:pnpm - 速度快、节省磁盘空间的软件包管理器!用法跟其他包管理器很相似,没有太多的学习成本, npm 和 yarn 的命令它都支持。

也是必须先全局安装它才可以使用:

npm install -g pnpm

目前 pnpm 在开源社区的使用率越来越高,包括我们接触最多的 Vue / Vite 团队也在逐步迁移到 pnpm 来管理依赖。

pnpm install 包  // 安装包
pnpm i 包
pnpm add 包    // -S  默认写入dependencies
pnpm add -D    // -D devDependencies
pnpm add -g    // 全局安装
pnpm remove 包                            //移除包
pnpm remove 包 --global                   //移除全局包

pnpm 的下载源使用的是 npm ,所以如果要绑定镜像源,按照 npm 的方式 处理就可以了。

image.png

从上图就鞥看出他的优势在哪里,没错,就是快,我本人还是很建议用pnpm的。图引至 关于现代包管理器的深度思考—— 为什么现在我更推荐 pnpm 而不是 npm/yarn?

相关阅读:

注意:pnpm 的 lock 文件是 pnpm-lock.yaml ,和npm管理器一样,可以在此包查看插件安装。

通过 CDN 安装

这个在刚入门前端的时候应该就接触了,相信大家都不陌生,一般在插件安装部分都会提供一个CDN版本,在文件中可以直接通过 <script> 标签引入。 注意:在.html文件中

比如elementUI:

<!-- 引入样式 --> 
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 --> 
<script src="https://unpkg.com/element-ui/lib/index.js"></script>