JS新型包装管理工具纱线与新产品导入的比较与介绍
本文将从以下几个方面介绍纱线:
与npm相比,纱线解决了哪些问题,带来了哪些便利?获得正确的纱线姿势。开始使用纱线(介绍一些常用命令、个人经验以及纱线与npm相比的优势
根据官方文件,纱线有六大优势
1.离线模式
纱线会有一个缓存目录,缓存之前安装的软件包,所以重新安装的时候不需要从网络下载,大大加快了安装速度。
这一点非常重要。npm每次安装都被批评从网络下载了很多东西,而且全部都是重新下载的,项目多的时候很烦人。
我们部署节点项目的时候,需要把所有的依赖项都安装在发布者上,发布者的网络环境不是很好(不要带梯子),导致安装速度慢,故障频繁(有些包需要在线编译)。更换纱线后,只需要缓存纱线的缓存目录,每次快速安装,马妈再也不用担心发布失败。
2.依赖关系的确定性
在每台机器上为同一个项目安装依赖项时,生成的依赖项序列和版本是一致的。
以前,国家预防机制在这里有一个不好的地方。比如我写的项目依赖于三个库:A、B、c,我写package.json的时候给A、B、c分配了版本号,但是库A可能依赖于库D、E、F,库D依赖于库G、h,在这么多关联依赖中,有可能一个库在指定依赖的时候没有指定版本号。
那么,这就引出了一个问题。如果我在另一台机器上的同一个项目上安装依赖项,或者删除这台机器项目下的node_modules目录来重新安装依赖项。由于关联依赖中没有指定版本号的库,版本更新会导致重新安装依赖,某些特定软件包的版本不一致。在这种情况下,你会发现原来正常工作的程序突然变得无法运行或者出现一堆bug。
Npm对包引入的顺序也非常敏感,例如在空项目中执行以下命令
npminit-ynpminstall[emailprotected]-SNP minstall[emailprotected]-SNP minstall[email protected]-s我们在这里安装了三个包,它们都依赖于lodash,但是ble依赖于[email protected],另外两个依赖于[email protected]。
现在目录依赖结构如下
此时,假设我们在项目中使用lodash,但是忘记重新安装lodash。
var lo dash=require(' lo dash ');console.log(lodash。VERSION);//v1.0.3当目录依赖结构为时,另一位同事获取项目代码并执行npm安装
可以看到,第一层依赖的lodash已经改为4.x版本,从而造成依赖版本不一致的问题。不管引入的顺序如何,纱线都会保证目录依赖结构的一致性,从而保证不会出现这样的bug。
3.网络性能优化
下载软件时,将优化请求顺序以避免请求瀑布
4.网络反弹
当安装包请求失败时,纱线不会导致安装失败,它会自动尝试重新安装。然而,国家预防机制将毫不犹豫地失败,这将导致不得不再次这样做,并且需要时间
5.多个注册源
所有依赖包,无论它们被不同的库间接引用多少次,都将只从一个注册的源安装,要么是npm要么是bower,以防止混淆和不一致。
6.平面模式
当多个包依赖于同一个子包时,纱线会试图提取同一个包,以防止多次复制和浪费空间。例如,在1.2中,纱将为巴别塔-生成器和巴别塔-助手-定义-映射创建相同的lodash子依赖关系,从而节省一部分空间。
更多表情符号
表情包大战o()o
正确的安装姿势
注意纱线依赖于节点运行环境,官网提供了N种不同环境下的安装方式。点击我查看。当然最重要也是最常见的一个就是npm安装纱-g,也不知道为什么官网做了那么多飞蛾的安装方法,比如brew,yum,还需要很长时间。
纱线常用指令介绍
创建项目
命令纱线初始化,细节
像npm一样,会有一个交互式窗口来询问一些与软件包相关的问题
问题名称(testdir): my-awesome-package问题版本(1.0.0) :问题描述:你能找到的最好的包.问题入口点(index.js) :问题git存储库3360 https://github.com/yarnpkg/example-yarn-packagequestion作者:纱线贡献者问题许可证(MIT): success saved package . JSON在87.70 s内完成.当然,您可以添加参数-yes/-y来自动回答所有问题(yes)并且很容易JSON
管理依赖关系
请注意,以下命令将自动更新您的package.json和yarn.lock文件
添加依赖项
命令纱线添加[包裹]@[版本/标签],详细介绍
这将自动将包添加到package.json中的依赖项中,并且还会更新纱线. lock
{'name' :' my-package ',' dependencies ' : { ' package-1 ' : ' 1 . 0 . 0 ' } }需要向不同的依赖项添加以下参数
yarnad-dev/-d添加到开发依赖项yarnad-peer/-p添加到对等依赖项yarnad-optional/-o添加到optionalDependencies更新依赖项
命令纱线升级[套装]@[版本/标签],详细介绍
更新相关版本并自动更新package.json和yarn.lock文件
{'name' :' my-package ',' dependencies ' : {-package-1 ' : ' 1 . 0 . 0 ' ' package-1 ' : ' 2 . 0 . 0 ' } }删除依赖项
命令纱线移除[包装]
删除依赖项并自动更新package.json和yarn.lock文件
安装依赖关系
命令纱线安装,详情
将从package.json中提取所有依赖项并安装它们,然后生成yarn.lock来锁定所有依赖版本。当其他人执行yarn install时,他们将根据yarn.lock安装依赖项,以确保不同计算机安装的依赖目录结构完全一致。
可选参数
Yarninstall-flat只允许有一个依赖版本,并且会出现一个交互窗口,供用户选择要安装的特定版本。
yarninstall-强制再次下载所有依赖包
yarninstall-生产仅下载依赖项下的依赖项
全局指令
在“纱线”命令前添加一个全局修改,使该命令成为全局命令。支持的命令有添加、绑定、最小二乘、删除和升级
例如,npm安装大口-g可以替换为纱全局添加大口
个人使用体验
更换安装源,使用阿里提供的npm注册表加速,纱线配置设置注册表' https://Registry.npm.taobao.org '。当然,如果已经配置了npm,则不需要再次配置纱线。
纱线还有很多小问题,但官方也在努力解决。建议使用纱线自更新,不时更新版本
过去,包锁定使用npm shrinkwrap命令,这种命令既麻烦又难以维护。使用纱线后自动生成锁定文件简单方便
摘要
以上就是本文的全部内容。希望这篇文章的内容对你的学习或工作有所帮助。有问题可以留言交流。
版权声明:JS新型包装管理工具纱线与新产品导入的比较与介绍是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。