Spartacus 2211 开发使用 npm,CCV2 上用 yarn 进行构建

简介: Spartacus 2211 开发使用 npm,CCV2 上用 yarn 进行构建

Spartacus 开发采用 npm,所以 Spartacus 源代码 Github 仓库能看到 package-lock.json 文件。但是 ccv2 build 时用 yarn,在国内使用 ccv2 build 有时候会出现网络连接问题。

2023年的时候,缺失的 package-lock.json 被添加了:

https://github.com/SAP-samples/cloud-commerce-sample-setup/commit/8c653e86c9fa9430864cdb09e0c7bd7a14572eaa

Yarn 和 npm 是 JavaScript 生态系统中最流行的两个包管理工具,它们为开发者提供了一个便捷的方式来管理项目依赖。虽然它们的目标相同,但在实现、性能、以及一些特性上存在着显著的差异。本文旨在深入探讨 Yarn 和 npm 之间的区别,并且通过实例来说明这些区别如何影响实际的开发流程。

1. 历史背景

Yarn 由 Facebook、谷歌、Exponent 和 Tilde 联合开发,于 2016 年发布。它的出现主要是为了解决当时 npm 在性能、安全性以及依赖管理上的一些问题。特别是在处理大型项目、安装速度和依赖的一致性方面,Yarn 提供了改进的方案。

npm(Node Package Manager)作为 Node.js 的官方包管理工具,比 Yarn 早很多年问世。它随 Node.js 一同推出,迅速成为了 JavaScript 开发者的首选依赖管理工具。随着时间的推移,npm 也在不断地更新和改进,以解决社区用户的需求和挑战。

2. 安装过程

在安装过程中,Yarn 和 npm 也有所不同。

  • **Yarn:**为了使用 Yarn,开发者需要先安装 Node.js。然后,可以通过 npm 安装 Yarn(npm install -g yarn),或者通过其他方式安装,比如 Homebrew。
  • **npm:**通常情况下,安装 Node.js 时会自动包含 npm,不需要额外的安装步骤。

3. 依赖管理

在依赖管理方面,Yarn 和 npm 使用了不同的策略来确保项目的依赖版本一致性。

  • **Yarn:**使用 yarn.lock 文件锁定依赖版本。当你添加或者更新一个依赖时,Yarn 会自动更新 yarn.lock 文件,这确保了所有开发者和部署环境中的依赖版本都是一致的。
  • **npm:**最初,npm 使用 package-lock.jsonnpm-shrinkwrap.json 文件来锁定依赖版本。自 npm 5.x 版本起,package-lock.json 文件会自动生成,与 Yarn 的 yarn.lock 类似,旨在确保依赖版本的一致性。

4. 性能比较

性能是 Yarn 和 npm 之间一个重要的比较点。Yarn 在初期因为其优异的性能而受到欢迎。

  • **Yarn:**通过并行安装依赖以及利用本地缓存来提高性能。这意味着一旦你下载了某个包,再次安装时就可以直接从缓存中获取,而不是每次都从网络下载。
  • **npm:**在 npm 的早期版本中,性能相比于 Yarn 较慢。但从 npm 5.x 开始,性能得到了显著的提升,特别是引入了 package-lock.json 以及改进了缓存机制之后。

5. 安全性

随着 JavaScript 生态系统的快速增长,包管理工具的安全性变得越来越重要。

  • **Yarn:**提供了一些内置的安全特性,比如许可证检查和更严格的 yarn.lock 文件,来增强项目安全性。
  • **npm:**在安全性方面也不断进步,提供了 npm audit 命令来分析项目依赖的安全漏洞,并提供修复建议。

6. 用户界面和体验

Yarn 和 npm 在用户界面和体验方面也有所不同。

  • **Yarn:**提供了更丰富的命令行输出,例如安装依赖时的进度条和详细的错误日志,这些设计考虑了开发者的使用体验。
  • **npm:**虽然在早期版本中命令行输出较为简单,但在后续版本中也引入了进度条等用户友好的特性,改善了用户体验。

7. 社区和生态系统

  • **Yarn:**虽然是后来者,但由于其性能和特性的优势,迅速获得了大量的用户和社区支持。Facebook、Google 等大公司的支持也为其增加了额外的信誉。
  • **npm:**作为 Node.js 的官方包管理工具,拥有庞大的用户基础和成熟的生态系统。npm 社区是 JavaScript 生态中最大的社区之一,提供了海量的包供开发者使用。

8. 实例应用

假设你正在开发一个大型的前端项目,需要考虑包管理工具的选择。

如果你重视安装速度和一致性保证,可能会倾向于选择 Yarn。Yarn 的 yarn.lock 文件和缓存机制可以在多人开发的情况下保证依赖版本的一致,而且其并行安装依赖的特性可以显著提高依赖安装的速度。

另一方面,如果你在寻找一个稳定且广泛支持的包管理工具,npm 也是一个不错的选择。随着 npm 的不断进化,许多早期存在的问题已经得到了解决,特别是在性能和安全性方面。npm 的

npm audit 命令为项目安全性提供了额外的保障。

结论

Yarn 和 npm 各有优缺点,选择哪一个取决于项目需求、团队偏好和个人习惯。随着这两个工具的不断发展,它们在性能、安全性和用户体验上的差距正在逐渐缩小。最重要的是,无论选择哪一个,都要确保在团队内部统一使用,以避免由于包管理工具不同而导致的依赖不一致问题。

在实际的开发过程中,了解每个工具的特性和最佳实践是非常重要的。通过合理利用 Yarn 或 npm 的强大功能,可以大大提高开发效率,保证项目的稳定性和安全性。随着 JavaScript 生态的不断成熟,我们也可以期待这些工具会提供更多的功能和改进,以更好地服务于开发者社区。

相关文章
|
2月前
|
资源调度 JavaScript
关于 yarn 和 npm lock 文件混用的问题
关于 yarn 和 npm lock 文件混用的问题
66 0
|
15天前
|
资源调度 开发者
npm,registry,镜像源,npm切换源,yarn,cnpm,taobao,nrs
我们在使用 node 的 npm 下载依赖的时候,往往下载速度很慢,那是因为 npm 默认的是 npm 处于国外的官方镜像源。所以需要切换到国内的镜像源来加速依赖下载。所以本文推荐一款简单好用 npm 镜像源管理器,可以方便开发者管理自己的镜像源。
89 1
message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra
message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra
|
2月前
|
存储 缓存 资源调度
三巨头对决:深入了解pnpm、yarn与npm
三巨头对决:深入了解pnpm、yarn与npm
159 0
|
2月前
|
JavaScript iOS开发 MacOS
掌握NVM、NRM和NPM:Node.js开发的利器
掌握NVM、NRM和NPM:Node.js开发的利器
69 0
|
2月前
|
资源调度 JavaScript 开发工具
从npm慢如蜗牛到飞驰如光:nrm加速你的Node.js开发
从npm慢如蜗牛到飞驰如光:nrm加速你的Node.js开发
118 0
|
2月前
|
JavaScript Java API
云效问题之流水线使用npm制品仓库构建拉取依赖特别慢如何解决
云效仓库是阿里云提供的代码托管和版本控制服务,支持Git等多种版本管理工具;本合集聚焦于云效仓库的使用技巧、团队协作流程以及常见问题解答,旨在帮助开发者更高效地进行代码管理和协作开发。
113 0
|
7月前
|
分布式计算 资源调度 监控
Hadoop学习笔记(四)之YARN
Hadoop学习笔记(四)之YARN
|
8月前
|
分布式计算 资源调度 Hadoop
Flink安装部署{单机模式、会话模式(集群部署)、yarn模式(包含hadoop3.1.3部署)}
Flink安装部署{单机模式、会话模式(集群部署)、yarn模式(包含hadoop3.1.3部署)}
300 0
|
13天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
41 9