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

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。

    推荐阅读
  • 赣州新能源车船免征车船税优惠政策(赣州新能源车船免征车船税优惠政策最新)

    发动机采用微量柴油引燃方式且引燃油热值占全部燃料总热值的比例不超过5%的,视同纯天然气发动机。

  • 商丘承接产业转移成果(河南商丘打造产业集聚)

    为持续打造市场化、法治化、国际化的一流营商环境,以服务企业常态化推动经济社会高质量发展,商丘市将每月12日定为“企业服务日”。第一个“企业服务日”当天,商丘市的824名党员干部深入1539家企业走访调研,共梳理收集企业反映困难问题1502条,现场协调解决1018条。自推行以来,全市共通过清单为企业受理事项15834件。目前,已有3家落地,投资规模10亿多元。目前监管事项数据覆盖率达94.1%,居河南省第二位。

  • 燃气热水器的工作原理(燃气热水器的工作原理与内部结构)

    燃气热水器已经成为当今家庭的必不可少的居家单品之一,选择一款优质的热水器很重要,选购热水器并不是盲目的,掌握一定的选购诀窍是有必要的,首先了解燃气热水器工作原理是我们掌握燃气热水器选购技巧的第一步。目前国内常见的燃气热水器有烟道式,强排式与两种。

  • 首案红(首案红牡丹好养吗)

    首案红牡丹,皇冠型,花深紫红色,中花品种,花期偏晚。

  • 手机飞行模式能不能使用(还以为手机飞行模式没用吗)

    手机飞行模式最早出现于2000年2月,随着科学技术的不断进步,手机已从老年机阶段过渡到智能手机阶段,但无论如何更新换代,手机的飞行模式一直未被取消。很多网友表示用了几代手机,从来没有用过手机上的飞行模式,但实际上每个手机功能之所以没被取消,一定有其独特之处。

  • 哮喘病的症状表现有哪些(哮喘病是什么症状)

    无论是病毒、细菌或者是过敏因素导致,通常突然发生。发生的原因是气道痉挛,气道痉挛可以自行缓解,也可以通过药物治疗缓解。缓解药物包括吸入类支气管扩张剂和口服的支气管扩张剂,比如氨茶碱等。在哮喘发生之前可能会有打喷嚏、流鼻涕、眼睛痒、鼻子痒等前驱症状,前驱因素如果没有及时控制,就会发生典型的哮喘。哮喘一般以夜间或者凌晨多发,但运动型哮喘一般发生在运动后,月经性哮喘发生在月经前后。

  • 2020年天津财经大学住宿费退费详情 天津财经大学研究生宿舍条件2020

    本学期住宿费按5个月计算,未返校或在校实际住宿时间不足1个月的学生免收住宿费,住宿超过1个月不足2个月的按照1个月收费,依此类推。为保证退费工作的准确性,学生确认银行卡信息后,住宿费将分批次退至学生本人银行卡中。

  • 10种最推荐减肥蔬菜(越吃越瘦的3种减肥蔬菜)

    01西兰花西兰花含有丰富的膳食纤维,容易产生饱腹感,延长进食时间,减少热量的摄入,而且还能增强人体的免疫功能。不仅可以调节体液平衡,而且热量极低,还含有丰富的膳食纤维,能清除血管内的毒素垃圾。03西红柿西红柿又名番茄,东北人称之为洋柿子。营养丰富,口感甚佳,最重要的是这玩意儿热量极低,堪称减肥必备佳品。

  • 制作酸豆角最好吃的方法(酸豆角解暑助消化要多吃)

    三伏将临,酸豆角炒解暑助消化要多吃,简单易学,开胃下饭菜。"酸豆角炒鸡蛋",那种让人意犹未尽的"酸",增进食欲开胃好下饭,再加上嚼在嘴里发出"噌噌"声的鸡胗,总能让人回味无穷。酸豆角炒鸡蛋主要食材:酸豆角一百五十克、鸡胗三百克。

  • 遛狗为什么随便撒尿(女主人佛系遛狗)

    而一位网友也发布了她的佛系遛狗办法,而且她遛狗的时候甚至都不带牵引绳,就用这样的方式来说明她的无绳遛狗法的效果!看完了大家的佛系遛狗法,我们再来看看平时见到的佛系遛狗吧!