yarn装包(yarn包管理工具)

yarn装包(yarn包管理工具)大家好 又见面了 我是你们的朋友全栈君 文章目录 在 Node 生态系统中 依赖通常安装在项目的 文件夹中 然而 这个文件的结构和实际依赖树可能有所区别 因为重复的依赖可以合并到一起 客户端把依赖安装到 目录的过程具有不确定性 这意味着当依赖的安装顺序不同时 目录的结构可能会发生变化 这种差异可能会导致类似 我的电脑上可以运行 别人的电脑上不行 的情况

大家好,我是讯享网,很高兴认识大家。



大家好,又见面了,我是你们的朋友全栈君。

文章目录

在 Node 生态系统中,依赖通常安装在项目的 文件夹中。然而,这个文件的结构和实际依赖树可能有所区别,因为重复的依赖可以合并到一起。 客户端把依赖安装到 目录的过程具有不确定性。这意味着当依赖的安装顺序不同时, 目录的结构可能会发生变化。这种差异可能会导致类似 “我的电脑上可以运行,别人的电脑上不行” 的情况,并且通常需要花费大量时间定为与解决。

有时候就会遇到这种情况,完整可运行的项目上传到 上,别人 下来以后, 会报错。

一开始的主要目标是解决由于语义版本控制而导致的 npm 安装的不确定性问题。虽然可以用 来实现可预测的依赖关系树,但它并不是默认选项,而是取决于所有的开发人员指导并启用这个选项。

npm 5+ 以后的版本加入了 可以用来锁版本, 的名字,一看就懂,更清楚,但是不向后兼容。

向后兼容 npm 2-4。

举个例子: 对包引入顺序也十分的敏感,比如在一个空项目里执行以下命令:

我们这里安装了 3 个包都依赖于 ,不过 依赖 ,另外另个依赖 。 现在目录依赖结构如下:

这是假设我们在项目里使用 ,但是忘记重新安装

另一个同事获取项目代码,执行 ,这时的目录依赖结构里面,第一层依赖的 变成了 4.x 版本,这样就造成了依赖版本不一致的问题。而 则会保证无论怎样引入的顺序,目录依赖结构都是一致的,确保不会发生这样的 。

Yarn 就是一个类似于 npm 的包管理工具,它是由 推出并开源。

与 npm 相比,yarn 有着众多的优势,主要的优势在于:速度快、离线模式、版本控制。

npm 会等一个包完全安装完才跳到下一个包,但 yarn 会并行执行包,因此速度会快很多。

Yarn 会缓存它下载的每个包,所以无需重复下载。它还能并行化操作以最大化资源利用率,安装速度之快前所未有。

之前安装过的包会被保存进缓存目录,以后安装就直接从缓存中复制过来,这样做的本质还是会提高安装下载的速度,避免不必要的网络请求。

保证各平台依赖的一致性

力求网络资源最大利用化,让资源下载完美队列执行,避免大量的无用请求,下载失败会自动重新请求,避免整个安装过程失败


讯享网

对于不匹配的依赖版本的包创立一个独立的包,避免创建重复的。 对于多个包依赖同一个子包的情况,yarn 会尽量提取为同一个包,防止出现多处副本,浪费空间。

npm 用下来比较强的一个痛点就是:当包的依赖层次比较深时,版本控制不够精确。会出现相同 ,但不同人的电脑上安装出不同版本的依赖包,出现类似 “我的电脑上可以运行,别人的电脑上不行” 的 bug 很难查找。你可以使用 来实现版本固化,版本信息会写入 文件中,但它毕竟不是 npm 的标准配置。

而 yarn 天生就能实现版本固化。会生成一个类似 npm-shrinkwrap.json 的 yarn.lock 文件,而文件内会描述包自身的版本号,还会锁定所有它依赖的包的版本号:

存储着你的每个包的确切依赖版本,能确保从本地开发到生产环境,所有机器上都有精确相同的依赖版本。

我们在使用 Yarn 时,依然要访问 npm 仓库,但 Yarn 能够更快速地安装软件包和管理依赖关系,并且可以在跨机器或者无网络的安全环境中保持代码的一致性。

在 Yarn 中文网可以找到 window 下的三种安装方法:

不过我觉得这三种方法都不好用,快速好用的安装方法应该还是使用 npm 来安装:

关于为什么使用 ,以及 会带来哪来影响,这个可以看我的这篇文章:,里面详细介绍了为什么要使用 ,以及 的作用。

方式一

如果有报: ,可能就是权限不足,因此你需要切换到最高权限去执行命令

方式二

使用另一种初始化脚本的方法,可能就会比较简单一些:

使用 Yarn 来安装依赖时的体验比 Npm 要好很多;但是偶尔也会存在 Yarn 源仓库包下载不稳定的情况

一、临时修改

二、全局修改,安装淘宝镜像

三、使用第三方软件快速修改、切换 yarn 镜像源 (YARN registry manager) 不仅可以快速切换镜像源,还可以测试自己网络访问不同源的速度

注意:使用 或 安装全部依赖时是根据 里的 字段来决定的

Yarn 除了让安装过程变得更快与更可靠,还添加了一些额外的特性,从而进一步简化依赖管理的工作流。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141118.html原文链接:https://javaforall.cn

小讯
上一篇 2025-06-10 20:28
下一篇 2025-04-13 22:56

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/145682.html