大家好,今天小编来为大家解答以下的问题,关于一篇文章帮你了解主流包管理工具npm、cnpm、yarn,这个很多人还不知道,现在让我们一起来看看吧!
今天我们就来说说目前主流的npm、cnpm、yarn是什么,怎么用,有什么区别?
但在继续之前,我还是要说几句话,因为上面提到的很多工具,只要在网上查找一下就可以找到。对于初学者来说,您可能想知道为什么应该使用包管理工具。
在node诞生之前,比如jquery时代,我们在做项目的时候,想要引用第三方插件,通常都是下载插件,然后用script标签来引用,对吧?
script src=’插件包’/script 如果引用的插件很多的话也是很头疼的。这位名叫Isaac Z. Schlueter(npm 的创始人)的程序员可能是最头疼的。他实在看不下去了,于是他想出了一个办法:“用一个工具,把这些代码收集到一起,进行管理!”
于是npm就出来了,它的全称是Node Package Manager。现在新版本的Node已经集成了npm,可以直接使用。
好啦,废话不多说,咱们言归正传吧!
NPM
npm(节点包管理器)是JavaScript世界中的包管理工具。它是Node.js 平台默认的包管理工具。是前端模块化的标志性产品。简单来说就是通过npm下载模块并复制。使用现有代码来提高工作效率。
这是npm 的快速介绍:
npm 由三个独立的部分组成:
网站注册表命令行工具(CLI)网站是开发人员查找包、设置参数和管理npm 体验的主要方式。
注册表是一个巨大的数据库,存储有关每个包的信息。
CLI 从命令行或终端运行。开发人员通过CLI 与npm 交互。
npm常用命令
查看npm版本npm -v #npm -version 查看npm help # 查看所有命令帮助npm help # 如果想单独查看install命令的帮助,可以使用以下命令npm help install 查看所有已安装的包npm list # 列出当前安装的所有包#或者简写npm lsnpm ls -g #查看全局安装的模块和依赖的本地安装依赖包以及全局安装(global) #安装nodejs依赖包,默认安装最新版本(本地) npm install package name #一次性安装多个(本地) npm install module name module name #安装指定版本号的依赖包(本地) npm install Package name@version #将包安装到全局环境npm install Package name -g # 根据打包.json文件安装npm install 卸载依赖包npm uninstall 包名npm uninstall gulp –save-dev #卸载开发版本模块安装生产阶段依赖包-S, – -save 安装包信息将为添加到依赖项(生产阶段的依赖项)
npm install gulp –save 或npm install gulp -Spackage.json 文件的依赖项字段:
‘dependencies’: { ‘gulp’: ‘^4.0.2’} 安装开发阶段依赖包-D, –save-dev。安装包信息会添加到devDependencies(开发阶段依赖)中,所以一般在开发阶段使用。
npm install gulp –save-dev 或npm install gulp -Dpackage.json 文件的devDependencies 字段:
‘devDependencies’: { ‘gulp’: ‘^4.0.2’} 安装可选阶段依赖包-O, –save-optional 安装包信息会添加到OptionalDependencies中(可选阶段依赖)
npm install gulp –save-Optional 或npm install gulp -Opackage.json 文件的可选依赖项字段:
‘optionDependencies’: { ‘gulp’: ‘^4.0.2’} 精确安装指定版本的依赖包-E, –save-exact 精确安装指定的模块版本
npm install gulp –save-exact 或npm install gulp -E 输入命令npm install gulp -ES ,注意package.json文件的dependency字段,可以看到版本号中的^**消失了。
‘dependencies’: { ‘gulp’: ‘4.0.2’} 模块的依赖写入package.json文件后,其他人打开项目根目录(项目开源,内部团队协作),使用依赖项配置的npm install 命令会安装所有依赖包。
npm 安装注意:
npm 的package.json 中的~ 和^
~ 将匹配最新的小版本依赖包,例如~1.2.3 将匹配所有1.2.x 版本,但不包括1.3.0^ 将匹配最新的大版本依赖包,例如^1.2.3 将匹配所有1.x.x 软件包,包括1.3.0,但不包括2.0.0。更新依赖包npm update 包名,检查是否有依赖包过期。 npm outdated 执行上述命令,会出现以下情况:
还有一个第三方工具npm-check,检查依赖包的功能比较强大。具体使用请查看其文档。
查看和管理npm的基本配置npm config list -l #查看所有配置清除本地npm缓存npm cache clean 初始化项目npm init #初始化项目,并引导在项目文件夹下创建package.json文件其他npm命令可以查看npm中文文档
cnpm是什么?
这是一个完整的npmjs.org 镜像。您可以使用它来代替官方版本(只读)。同步频率目前为每10分钟一次,以保证尽可能与官方服务同步。 ——摘自淘宝NPM镜像
如何使用cnpm?
首先,您需要安装cnpm 模块。命令如下:
npm install -g cnpm –registry=https://registry.npm.taobao.orgcnpm 支持除publish之外的所有npm命令。
由于cnpm仓库只是npm仓库的一个副本,它并不承担publish工作,所以执行cnpmpublish命令会失败。
yarn是什么?
Yarn 于2016 年10 月发布。截至2021 年1 月,它在Github 上拥有39,400 个star。而npm 只有17.2k 启动。该项目由一些高级开发人员维护,包括Sebastian McKenzie (Babel.js) 和Yehuda Katz (Ember.js、Rust、Bundler 等)。
Yarn 一开始的主要目标是解决由于上一节中描述的语义版本控制而导致的npm 安装的不确定性问题。虽然可以使用npm Shrinkwrap 来实现可预测的依赖关系树,但它不是默认选项,并且依赖于所有开发人员都了解并启用此选项。
Yarn 采用了不同的方法。每个yarn安装都会生成一个类似于npm-shrinkwrap.json的yarn.lock文件,并且它是默认创建的。除了一般信息之外,yarn.lock 文件还包含所安装内容的校验和,以确保所使用的库的版本相同。
Yarn 是一个重新设计的npm 客户端,允许开发人员并行化所有必要的操作,并添加了一些其他改进。
运行速度显着提高,整体安装时间变得更少。与npm 一样,yarn 使用本地缓存。与npm 不同,yarn 可以在没有互联网连接的情况下安装本地缓存的依赖项,并且它提供离线模式。该功能于2012 年在npm 项目中提出,但从未实现。允许合并项目中使用的所有包的许可证
安装
通过命令npm install -g yarn 安装查看版本:yarn –version
通过安装包程序安装地址:https://classic.yarnpkg.com/zh-Hans/docs/install#windows-stable
常用命令:
yarn init:初始化项目,会在根目录生成package.json。和npm类似,不再详细解释。 yarn add 包名:安装依赖包,会自动安装最新版本,会覆盖指定版本号yarn add 包名1 包名1:一次添加多个包yarn add 包名@版本:添加指定版本的包yarn add 包名@版本:添加指定版本的包Upgrade Package name@version:更新包到指定版本yarnupgrade –latest包名:更新包到最新版本yarnremove包名:删除包yarnremove包名1包名2:一次删除多个包yarninfo packagename:可用于查看某个模块的最新版本信息yarn install:安装package.json中的所有包,并添加该包及其所有依赖项将其保存到yarn.lockyarn install –force:强制重新下载所有包包yarn install –flat:安装包的单个版本yarn install –product:仅安装依赖项中的包yarn install –no-lockfile:不要阅读获取或生成yarn.lockyarn install –pure-lockfile:执行不生成yarn.lock。具体详细命令请查看官方文档:https://classic.yarnpkg.com/zh-Hans/docs
总结
说了这么多,总结就是:npm是国外版本,cnpm是国内版本,yarn是npm的增强版。
结语:希望小凡的每一篇文章都能对您有所帮助!
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/113210.html
用户评论
从此我爱的人都像你
终于有人把这些奇怪的包管理工具解释清楚了!以前一直搞不懂npm和cnpm的区别,现在看懂了,还有yarn这个新玩意儿还挺有意思的。感谢博主!
有11位网友表示赞同!
夜晟洛
写得不错啊,通俗易懂,刚好入门开发的小白,终于可以理解这几个工具的作用了!不过我还想知道一下不同的包管理工具在实际项目中,各自的优缺点是什么呢?希望作者可以再多分享一些。
有18位网友表示赞同!
ok绷遮不住我颓废的伤あ
我最近也学习开始研究这些各种包管理工具,npm确实很常用,但一直听说cnpm的速度更快,我也去试了一下,的确不错!这篇文章解释得很有用,之前一直在乱用npm和yarn,也不知道为什么有时候代码报错…
有16位网友表示赞同!
早不爱了
我是前端开发比较久的人了,对这些包管理工具都不陌生啦。文章写的还是蛮详细的,不过对于一些基础知识性的内容,我觉得可以略省一些,更多的重点放在各个工具的使用案例和优缺点对比上。这样更有针对性吧!
有15位网友表示赞同!
苏莫晨
我还在纠结用哪个包管理工具呢?看了这篇文章感觉yarn确实很有潜力,安装速度快又很安全,我还是去试一试看看怎么样!
有16位网友表示赞同!
巷陌繁花丶
文章还行,但是太机械了,缺少一些互动,比如一些实际案例代码演示,或者读者提问和作者回答的环节,这样能更直观的帮助人理解。
有11位网友表示赞同!
你身上有刺,别扎我
cnpm的速度确实快很多啊,但有时还是会遇到一些国内软件包找不到的问题,npm就比较全了,但是速度慢点。这个东西真是一把双刃剑啊!
有10位网友表示赞同!
tina
我以前用的是yarn,感觉挺好用的,后来发现cnpm也很不错,而且速度更快,现在就两个都用着,哪个工具合适根据项目需求决定吧。
有20位网友表示赞同!
仰望幸福
这篇文章讲得真好理解呀,我之前一直以为npm和cnpm只是一个名称的区别,现在才知道他们功能有很大区别!感谢作者分享,简直是开导了我的眼界。😊
有9位网友表示赞同!
来瓶年的冰泉
文章写的真仔细啊,涵盖了npm、cnpm、yarn的各个方面,感觉像一本包管理工具入门指南啊!太棒了!
有20位网友表示赞同!
秘密
我感觉这篇文章写的有点过于理论化,没有结合实际项目使用场景来描述,对于新手来说可能理解起来比较困难,建议作者可以添加一些案例讲解。
有19位网友表示赞同!
青衫负雪
看了你写的文章,我对cnpm越来越感兴趣了,速度更快更安全,以后还是用它吧!不过还有个问题我想问,怎么在不同的工具之间转换呢?
有6位网友表示赞同!
断秋风
我以前一直觉得npm就足够用了,但看到这篇文章后,对yarn的吸引力越来越强了。 确实像作者说的那样,很多时候Yarn 能比 npm 更快捷、更高效地管理依赖关系!
有7位网友表示赞同!
终究会走-
对于开发者来说,选择合适的包管理工具很重要,这篇文章总结得很好!我要是刚入门开发的小伙伴,看了这个文章就能快速上手了。
有20位网友表示赞同!
走过海棠暮
我觉得作者应该多分享一下不同项目的最佳实践,比如哪些场景更适合使用哪种包管理工具,这样会更有帮助!
有19位网友表示赞同!
冷落了♂自己·
我是一名后端开发者,对前端的包管理工具并不是很了解。这篇文章虽然偏重于前端工具,但还是让我对npm、cnpm以及yarn有了初步的认识。
有8位网友表示赞同!