”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > -?什么是纱线?-

-?什么是纱线?-

发布于2024-11-15
浏览:213

当您正在处理一个项目时,看到一个yarn.lock 文件盯着您,您可能会想,“什么是yarn?”。那么让我们开始吧。

Yarn 是主要的 JS 包管理器之一,用于管理 JS 项目中的依赖项(包和库)。

包管理器是一个帮助开发人员处理项目所需的外部库和模块的工具 → 自动化安装、更新和管理依赖项的过程。

安装yarn作为你的包管理器,你可以使用命令来完成:npm install -gyarn(-g表示在你的机器上全局),安装后你可以简单地运行yarn —version来验证yarn的安装。

Yarn 与 package.json 一起使用。

package.json 文件是 Node.js 项目中的核心配置文件。 它作为项目的蓝图,包含有关项目的重要元数据,包括其依赖项、脚本、版本、作者信息等。
Yarn 创建一个锁定文件yarn.lock,它捕获所有包及其依赖项的确切版本,在每次安装包时提供设置。
包管理器还运行用于构建、测试和部署的脚本。

使用yarn添加包名添加包,这将从注册表中获取包并将其本地安装在节点模块文件夹中。 (https://classic.yarnpkg.com/en/docs/cli/add - 添加包时所需的一切)

如果想了解yarn如何工作,你首先需要了解什么是Node.js
Node.js 是运行时环境,允许您在服务器上运行 JS。 [JS → 运行时 → 服务器].

在 1990 年代,JS 主要像脚本语言一样在浏览器中使用,随着 Web 平台的发展,JS 变得更加强大,2009 年 Node.js 发布了。
到那时就不可能在服务器上运行JS代码了。 Node.js 为开发人员带来了完整的堆栈并用一种将在服务器上运行的语言编写整个应用程序。

它是如何工作的?
当您访问互联网上指向您的服务器的 URL 并收到请求时,我们可以使用节点来处理请求并从服务器的文件系统读取文件并将响应返回给客户端,以便他们可以在浏览器中查看 HTML。 &&&]

-? What is YARN ?-

我们说过 Yarn 是一个包管理器,它与 Node.js 一起管理项目依赖项(库或包)。当您开发 Node.js 项目时,您经常需要第三方库来执行各种任务(HTTP、使用数据库、构建 UI..)。 Yarn 的作用是为我们自动化下载、安装、更新和管理这些库的过程。

当您使用yarn创建项目时,您会初始化一个package.json文件,该文件定义项目的依赖项。当您运行yarn install或yarn add等命令时,Yarn与node.js包进行通信,下载它们并将它们放置在项目中的node_modules文件夹中。

Node.js 使用

CommonJS 模块系统,其中 Node.js 中的每个文件都被视为一个单独的模块。允许您将模块“要求”到您的代码中。使用 “require”,它尝试通过搜索以 node_modules 开头的已定义路径来定位 Express 模块。

为什么这很重要?

Node.js 本质上并不管理依赖关系! → 它依赖于像 Yarn 这样的外部包管理器来做到这一点。

结论完毕! Yarn 通过 node_modules 帮助 Node.js 安装 Node.js 所需的依赖项。创建yarn.lock以确保各种环境下的依赖关系一致!缓存软件包以实现更快的安装和离线支持!优化node_modules结构,让Node.js更高效地搜索依赖。使用脚本处理依赖冲突并自动执行任务,支持 Node.js 应用程序开发和部署。

版本声明 本文转载于:https://dev.to/nobody-99/-what-is-yarn--3647?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • “n:m”和“1:n”关系如何塑造数据库设计?
    “n:m”和“1:n”关系如何塑造数据库设计?
    理解关系数据库设计:“n:m”和“1:n”的意义在数据库设计中,符号“ n:m”和“1:n”在表示表或实体之间的关系方面起着至关重要的作用。这些符号表示它们关联的基数。"n:m" 关系:多对多“n:m”关系表示多对多两个数据实体之间的对多关联。这意味着对于一个表中的每个实体,它可...
    编程 发布于2024-11-15
  • 如何在 Java 中查找重定向的 URL?
    如何在 Java 中查找重定向的 URL?
    在 Java 中查找重定向 URL在 Java 中访问网页时,处理 URL 重定向到备用位置的情况至关重要。要确定重定向的 URL,您可以使用 URL 和 URLConnection 类。使用 URLConnection.getUrl()使用 URLConnection 建立连接后,您可以检索连接通...
    编程 发布于2024-11-15
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-15
  • 在 C++ 中将字符串转换为整数时如何处理转换错误?
    在 C++ 中将字符串转换为整数时如何处理转换错误?
    使用 C 中的错误处理将字符串转换为 int 将字符串转换为整数是编程中的常见任务。但是,在某些情况下,字符串值可能无法成功转换为整数。在这种情况下,优雅地处理转换失败至关重要。boost::lexical_cast将字符串转换为 int 时出现错误的最直接方法之一处理方法是使用 boost::le...
    编程 发布于2024-11-15
  • 如何在 JavaScript 中访问 PHP 变量?
    如何在 JavaScript 中访问 PHP 变量?
    在 JavaScript 中访问 PHP 变量直接在 JavaScript 中访问 PHP 变量是一个挑战。但是,有一些方法可以实现此目的:使用嵌入式 PHP 语句:在 JavaScript 块中嵌入 PHP 代码允许您将 PHP 变量分配给 JavaScript 变量:<script typ...
    编程 发布于2024-11-15
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1和$array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求是构...
    编程 发布于2024-11-15
  • 多线程概念 部分死锁
    多线程概念 部分死锁
    欢迎来到我们的多线程系列的第 3 部分! 在第 1 部分中,我们探讨了原子性 和 不变性。 在第 2 部分中,我们讨论了饥饿。 在这一部分中,我们将深入研究多线程中死锁的机制。原因是什么,如何识别以及可以使用的预防策略,以避免将代码变成僵局。应用程序逐渐停止,通常没有任何明显的错误,让开发人员...
    编程 发布于2024-11-15
  • JavaScript 要点:Javascript 的部分策划者)
    JavaScript 要点:Javascript 的部分策划者)
    In this section, we will implement a game called Mastermind in JavaScript. This game development would cover a lot of the concepts that we have discus...
    编程 发布于2024-11-15
  • 如何解决 Tomcat 6.0 中的 PermGen 空间错误?
    如何解决 Tomcat 6.0 中的 PermGen 空间错误?
    解决 Tomcat 6.0 中的永久代空间错误在 Tomcat 6.0 中进行索引操作时,您可能会遇到可怕的永久代空间错误。出现此问题的原因是为永久代分配的空间不足,永久代用于存储类、方法和其他元数据。增加 PermGen 空间增加 PermGen 空间-XX:MaxPermSize=128m pe...
    编程 发布于2024-11-15
  • 编程中原始类型和引用类型之间的根本区别是什么?
    编程中原始类型和引用类型之间的根本区别是什么?
    原始类型和引用类型:显着差异在编程领域,数据类型在组织和表示数据方面发挥着至关重要的作用。在这些类型中,基本类型和引用类型因其根本区别而脱颖而出。什么是基本类型?基本类型是直接存储其值的基本数据类型。它们包括整数、双精度数、布尔值和字符。这些类型的行为就像独立的实体,本质上保存它们的值。什么是引用类...
    编程 发布于2024-11-15
  • Cypress 的互联网:Heroku 的“互联网”游乐场的真实场景
    Cypress 的互联网:Heroku 的“互联网”游乐场的真实场景
    我最近去了 chatGPT 并询问有哪些好的自动化练习,在同一系统上工作一段时间后,或者只为特定类型的用户流提供自动化,我们最终可能会忘记一些事情,所以我询问了一些练习网站,然后我找到了互联网。 尽管该网站可能看起来很简陋,但它们仍然为您提供了一个尝试自动化的地方,而目前,这就是我所需要的。我花了...
    编程 发布于2024-11-15
  • 如何追踪 Go 堆转储到其源变量?
    如何追踪 Go 堆转储到其源变量?
    如何理解堆转储表示?你在理解 Go 中堆转储的表示时遇到了困难。虽然您已经浏览了 GitHub 上的可用信息,但它并未提供所需的清晰度。您寻求一种方法来将堆转储追溯到 Go 代码中保存对象根地址的特定变量。这将使您能够释放引用并允许垃圾收集器声明该对象。当前限制:重要的是要承认,目前还没有完整的解决...
    编程 发布于2024-11-15
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-15
  • 如何简化 Go 中的 CSV 读写以提高性能?
    如何简化 Go 中的 CSV 读写以提高性能?
    Go中高效的CSV读写在提供的Go代码中,CSV读写过程导致了严重的性能问题。为了解决这个问题,让我们探索一种简化这些操作的替代方法。高效读取 CSV我们不是将整个 CSV 文件加载到内存中然后进行处理,而是可以利用 csv.Reader 一次处理一行的能力。这显着减少了内存使用并提高了性能。以下代...
    编程 发布于2024-11-15
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-15

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3