百摩网
当前位置: 首页 生活百科

npm和yarn是干什么用的(yarnlink是如何帮助开发者对)

时间:2023-08-08 作者: 小编 阅读量: 4 栏目名: 生活百科

yarnlink是如何帮助开发者对大家好,我是前端西瓜哥最近在研究React源码,用到了yarnlink命令来链接两个项目我对其底层原理产生了兴趣,所以写了这么一篇文章,希望能够通过故事的形式,来让大家理解yarnlink的使用场景和。

npm和yarn是干什么用的?大家好,我是前端西瓜哥最近在研究 React 源码,用到了 yarn link 命令来链接两个项目,接下来我们就来聊聊关于npm和yarn是干什么用的?以下内容大家不妨参考一二希望能帮到您!

npm和yarn是干什么用的

大家好,我是前端西瓜哥。最近在研究 React 源码,用到了 yarn link 命令来链接两个项目。

我对其底层原理产生了兴趣,所以写了这么一篇文章,希望能够通过故事的形式,来让大家理解 yarn link 的使用场景和用法。

另外 npm link 和 yarn link 的效果是相同的,下文就不提及 npm link 了。

有一天,小瓜维护的一个名为 xigua 的 NPM 包,被人提了 issue。小瓜看了下问题描述,凭着对项目的熟悉,他大概知道是哪里出了问题。

为了测试,小瓜搭建了一个 demo-project 项目,且这个项目通过 yarn add xiga 安装了这个包,并在代码中使用了它。

└── demo-project└── node_modules├── apple└── xigua├── old.js└── package.json

理论上,小瓜去这个 demo-project 项目的 node_module/xigua 目录下直接修改代码就好了。

但不幸的是,里面的代码是编译出来的,无法直接修改。

小瓜于是跑到了 xigua-project 包的源码项目中,运行了一个可以监听源码修改生成 npm 包内容的命令。小瓜修改了一处代码,然后自动编译到了 xigua-project/build/ 中。

└── xigua-project└── build└── xigua(编译出来的文件夹)├── fix.js└── package.json

然后小瓜就复制编译好的代码,覆盖掉原来的 demo-project/node_module/xigua ,然后看看效果不对。小瓜发现不对,再改,然后再复制,一连重复了好几次。

“我受不了了,得想个办法。”小瓜说。每次编译完都要手动进行复制操作,太搞人心态了

机智的小瓜一番思考,最终想到了一个办法。

  1. 将 demo-project 下的 xigua 依赖包删除
  2. 然后创建一个 xigua 软链接文件,链接到 xigua-project 下的编译文件夹(软链接可以理解为快捷方式文件,可以将文件位置重定向)

├── demo-project│ └── node_modules│├── apple│└── xigua(重定向) -> /xigua/build/node_modules/xigua└── xigua-project└── build└── xigua(被链接的位置)├── fix.js└── package.json

利用软链接,我们将两个项目关联了起来

yarn link

此时,舍友小润抱着他的猹路过了,猹是他的猫的名字。

小瓜正对自己的奇思妙想沾沾自喜,立马向小润吹嘘起来。

小润:“这个需求,包管理器是有相关命令支持的。”

小瓜:“居然有!展开说说怎么用。”

小润于是讲解了起来。

其实很简单,我们进入到 xigua/build/xigua 目录下,执行 yarn link

$yarnlinkyarnlinkv1.22.17successRegistered"xigua".infoYoucannowrun`yarnlink"xigua"`intheprojectswhereyouwanttousethispackageanditwillbeusedinstead.✨Donein0.01s.

这样,包管理工具就会 在全局注册一个名为 xiuga 的链接。

具体就是创建一个 xigua 软链接文件,指向这个 xigua 目录。在 macOS 中,是在 ~/.config/yarn/link/xigua 目录下。

链接指向如下:

~/.config/yarn/link/xigua->/xigua-project/build/xigua

更准确来说,yarn link 是会从当前工作目录往上找第一个有正确 package.json 文件的目录,作为链接的对象,因为 npm 包里必须要有 package.json。

接下来我们再跑到 demo-project 项目的目录下,执行 yarn link xigua。

$yarnlinkxiguayarnlinkv1.22.17successUsinglinkedpackagefor"xigua".✨Donein0.01s.

它会做两个操作:

  1. 将 demo-project 下的 xigua 依赖包删除
  2. 然后创建一个 xigua 软链接文件,链接到 yarn/link/xigua。形成 demo-project -> yarn/link -> xigua-project 的链。

小瓜震惊了:“这操作不就和我的做法一样吗?不过多了一个 中间人 yarn

是的,但 yarn 更方便。

yarn unlink

你在 demo-project 测试完了,想要断开链接,此时需要执行:

$yarnunlinkxiguayarnunlinkv1.22.17successRemovedlinkedpackage"xigua".infoYouwillneedtorun`yarninstall--force`tore-installthepackagethatwaslinked.✨Donein0.01s.

断开链接后,因为原来的包删掉并换了个链接文件,所以我们需要再把这个包装回来,需要执行 yarn install --force。

你说我删除 node_modules,然后再执行 yarn 行不行。

可以,前提是你的 node_modules 没有其他包的链接,否则的话会把其他包的链接也干掉。

如果要删除全局的注册的名为 xigua 的 link,需要进入到被链接的目录下,执行 yarn unlink

$yarnunlinkyarnunlinkv1.22.17successUnregistered"xigua".infoYoucannowrun`yarnunlink"xigua"`intheprojectswhereyounolongerwanttousethispackage.✨Donein0.01s.

结尾

yarn link 的作用是帮助我们调试开发的 NPM 包。

因为普通项目的依赖包安装是从网络下载安装的,如果要使用本地编译的 NPM 包,比较好的方式是删掉依赖包,通过快捷方式来链接我们本地编译包。

为了简化这一流程,yarn link 出现了,通过中间者的形式,来实现快速地 link 和 unlink。

    推荐阅读
  • 猹是什么梗(网络语猹是什么梗)

    猹是一种动物,读作chá,现在在网上也是吃瓜群众的代称,我来为大家科普一下关于猹是什么梗?以下内容希望对你有帮助!因为在鲁迅的《故乡》一文里,猹总是会来瓜田里偷瓜吃,所以猹就变成了爱吃瓜的人的代名词,现在代指刷八卦信息、看最新八卦的网友们。附上一张经典的闰土在瓜田里举叉刀叉猹的配图。

  • 正宗苏州卤汁豆腐干怎么做(怎么做正宗苏州卤汁豆腐干)

    正宗苏州卤汁豆腐干怎么做除去杂质与不好的豆子,浸泡1天左右。在浆汁制作过程中,可以气温不同控制小火的时间,并严格控制大豆浸泡的时间,以胀开为限。按日产量的多少,分桶、分时浸泡,浸泡成熟后经冲洗,然后加清水碾磨。豆浆成半糊状,加入清水进行分离,前后共分4次,3次为冷浆分离,1次为热浆分离。凝固时严格控制豆浆浓度与温度,并根据浓度、温度加入适量天然盐卤为凝固剂。炸后坯色金黄,具有一定的皮层及疏松度。

  • c2的科目三会难考吗(科三考试技巧)

    c2的科目三会难考吗?以下内容希望对你有帮助!c2的科目三会难考吗不难,开考前勤加练习,找到自己平时的易错点,着重是心态问题,比如:调整心态、放下包袱、轻松上阵,把考试当成平时的一次练车,在考试期间不要去打听关注别人的考试成败情况,不然会受到别人的影响,专心做好自己的事。

  • 美国原子弹威力测试(威力是原子弹的1000倍)

    根据美国军事研究所做出了数据对比我们不难发现,它通过计算机模拟出来的反物质炸弹爆炸威力,是同等质量原子弹爆炸时产生威力的1000倍。威力是原子弹的1000倍,仅1克就能摧毁整个美国,美称应禁止使用而且反物质炸弹相比较原子弹来说,反物质炸弹更环保。据美军专家测算称,反物质武器里面的核心爆炸物,只需要一克的威力,就足以摧毁一个像美国一样大小的国家。目前美国媒体呼吁称应禁止使用该武器。

  • 冬季早安的祝福语(有关冬季早安的祝福语)

    接下来我们就一起去研究一下吧!冬季早安的祝福语寒风凉凉,夜也变长,轻声问候,是否繁忙?换季之时,注意健康;出门添衣,晚上加被;早起早睡,加强营养;喝口热汤,温暖无恙;一早一晚,小心着凉。天气冷了,愿你保持愉快的心情,幸福安康。天凉了,也挡不住我心的热情。天冷了,也隔不断我对你的思念。霜降了,也浇灭不了我爱的火焰。霜降了,也不能停息我对你的牵挂。勿忘添衣裳,勿忘朋友情,快乐随时伴你行。

  • 银行贷款结清证明怎么写最好有范本(模板范本看这里)

    银行贷款结清证明怎么写最好有范本?下面希望有你要的答案,我们一起来看看吧!银行贷款结清证明怎么写最好有范本范本如下:贷款结清证明(居中)借款人_________在我行的×××贷款_________元,贷款账号______________________,贷款发放日期_______年____月___日,已于_______年____月____日,结清贷款本息。

  • 2021广州疫情千万消费券什么时候结束(广州疫情取消2021年会通知)

    6月24日-6月28日领取补贴后,6月29日-7月4日消费者可到全市国美门店选购家电,使用惠民补贴直接抵扣货款。

  • 185身高适合骑什么摩托 185cm适合骑什么摩托车

    185身高适合骑比较大的摩托车,因为如果骑太小的摩托车不太般配。可以发现上述摩托车的座椅都非常高,宝马R1200GSAdventure的座椅高度为35.8英寸;铃木V-Strom1000的座椅高度为34英寸;杜卡迪XDiavel的座椅高度为29.7英寸。只有较高的座椅,才可以让个头比较大的人骑起来不憋屈,双腿才可以得到解放。除了以上所说的,下面再列举一些Adventure车型。

  • 五体投地什么意思(五体投地的含义)

    我们一起去了解并探讨一下这个问题吧!这是佛教最恭敬的行礼仪式。

  • 车险选哪一个公司比较好(哪个公司车险好)

    投保方便、服务到位、理赔速度快;太平洋车险的保费价格相对较低,服务也比较不错。