为什么在向根工作区 package.json 添加依赖项时,yarn 会发出警告

2024-01-07

每当我将依赖项添加到工作区项目的根目录时:

e.g.

yarn add assets-webpack-plugin -D

我收到以下错误:

运行此命令会将依赖项添加到工作区根目录而不是工作区本身,这可能不是您想要的 - 如果您真的这么想,请通过使用 -W 标志(或 --ignore-工作区-根-检查)。

另一种方法是将其添加到每个需要它的项目中,然后您就会遇到每个项目具有不同依赖项和锁定文件的问题。


既然你正在使用纱线工作区 https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/它管理所有项目(工作空间)的依赖关系,您应该将每个项目的依赖关系添加到自己的项目中package.json,而不是工作区根目录。纱线仅使用one yarn.lock放置在工作区根目录中的文件。此外,它还尝试将所有项目的依赖关系移至node_modules工作区根目录以尽可能防止重复。虽然需要放置一些依赖项node_modules他们自己的项目;例如当工作空间根目录有一个devDependency to [email protected] /cdn-cgi/l/email-protection当一个项目依赖于另一个版本的同一个包时,比如说1.2.5它们不兼容。假设您的工作区的目录结构如下:

├── workspace-root
|   ├── package.json
|   ├── workspace-a
|   |   ├── package.json
|   ├── workspace-b
|   |   ├── package.json

运行后yarn无论是在工作区根目录还是在任何工作区目录中,您都将具有以下目录结构:

├── workspace-root
|   ├── node_modules
|   ├── package.json
|   ├── yarn.lock
|   ├── workspace-a
|   |   ├── package.json
|   |   ├── node_modules
|   ├── workspace-b
|   |   ├── package.json
|   |   ├── node_modules

仅当您想要从工作区根运行脚本并且它需要依赖项时,才将依赖项添加到工作区根。在这种情况下,项目独立于该依赖关系,因此您可以忽略该警告。

为什么纱线会发出警告?

如果将项目的公共依赖项添加到工作区根目录中,它将不会进来package.json的项目。因此,如果您分离一个项目,它不会将所有依赖项都放在自己的项目中package.json所以运行yarn install对于分离的项目导致其自身不具有所有依赖项node_modules。显然,分离的项目无法工作,您需要修复缺失的依赖关系问题来解决该问题。

有关纱线工作区的更多信息

Yarn Workspaces 是一项功能,旨在更轻松地管理彼此相关的项目的依赖关系。例如,当您的项目具有类似的依赖关系时,您可以将每个项目声明为工作区。它可以防止大量重复。另一个重要的用例是单一存储库:

那些尝试过将项目拆分为多个包的人都知道 一次跨多个包进行更改是多么困难。 为了使过程更容易,一些大型项目采用了 monorepo 方法或多包存储库,这减轻了负担 跨包编写代码。

管理 JavaScript 开发人员每天使用的几个项目 作为 monorepos:Babel、React、Jest、Vue、Angular。

使用 Yarn Workspaces 可以带来以下好处:

  • 它允许您以这样的方式设置多个包,只需运行一次yarn install即可将所有包安装在一个包中。 单次通过。
  • 您的依赖项可以链接在一起,这意味着您的工作区可以相互依赖,同时始终使用可用的最新代码。

  • 这也是一个比yarn link因为它只影响您的工作区树而不是整个系统。

  • 所有项目依赖项都将安装在一起,为 Yarn 提供更多自由度来更好地优化它们。

  • Yarn 将使用单个锁定文件,而不是为每个项目使用不同的锁定文件,这意味着更少的冲突和更容易的审查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在向根工作区 package.json 添加依赖项时,yarn 会发出警告 的相关文章

  • 如何确定并打印 jQuery 版本?

    是否有一个 jQuery 函数可以返回当前加载的 jQuery 版本 你可以使用这个 fn jquery or if you re using noConflict jQuery fn jquery 当 jQuery 构建时它会自动更新 定
  • 如何向上转型以限制对象属性

    在 JavaScript 中 如何从子类向上转换到超类以自动删除超类中不存在的对象属性 示例 假设有以下 2 个类 class ClassA constructor public a string public b string class
  • JW Player javaScript API 不工作

    我使用 jwplayer version 5 10 2295 和浏览器 chrome 25 My code jwplayer container setup file path width 300px height 100px autost
  • 获取express.js中间件请求中“#”后的url

    我需要获取服务器中间件上的 url 使用express js 我用req url但是当 url 开头时 some urlreq url 返回 与req path 有没有办法获取url之后 在express js中 No URL 中以 符号永
  • 如何使用 HTML 5 实现类似 gmail 的文件上传/附件

    我记得一些支持 Ajax 之类的选项 无回发世界 文件上传 隐藏的 iframe 使用 flash 对象 尽管我仍然好奇为什么使用 SWF 以及它提供什么优势 然而 通过查看博客 HTML 5 似乎很有前途 我尝试了一些小示例 它确实有效
  • 如何在通过 .ajaxForm() 提交表单之前执行一些操作?

    我正在使用 ajaxForm 框架来发送我的数据 而无需重新加载我的页面 ReplayForm ajaxForm success function data alert Success 现在 我想在提交表单之前检查一些条件 如果条件为假 则
  • jQuery输入文件点击方法和IE上拒绝访问

    我尝试仅使用一个按钮作为输入文件 它在 Firefox Chrome Safari 中工作正常 但在 IE 中不行 提交表单时我总是收到 访问被拒绝 的消息 代码 input file click 有真正的解决方法吗 我在谷歌上浪费了大约2
  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • React JS 服务器端问题 - 找不到窗口

    你好 我正在尝试在我的reactJS项目中使用react rte 我有服务器端渲染 每次我想使用这个包时 我都会得到 return msie 6 9 b test window navigator userAgent toLowerCase
  • 如何在 select 和 option 标签中添加 JSON 数据?

    我有这个html代码 div class searchfilter div class searchwrapper div div
  • 使用 JQuery 禁用和启用所有超链接

    我有以下禁用所有超链接的内容 但在事件发生后我想再次启用它们 我该如何执行此操作 a click function return false 我认为这不仅仅是将其设置为 true 那么简单 谢谢大家 不要以这种方式绑定 点击 处理程序 而是
  • 如果一个对象结构与另一个对象结构不匹配/不匹配,如何引发异常

    我将读取格式正确的用户输入对象 也就是说 输入对象现在可以具有接口中未定义的任何键或子结构 如果用户提供了无效的对象 我如何抛出异常 预定义接口 export interface InputStructureInterface tableN
  • ES6继承:使用`super`访问父类的属性

    JavaScript 的super关键字 当我在 Chrome Babel TypeScript 上运行代码时 得到了不同的结果 我的问题是哪个结果是正确的 规范的哪一部分定义了这种行为 下面的代码 class Point getX con
  • Web组件中嵌套槽的内容不可见

    我有一个 Web 组件 它应该接受任意元素来包装其内容 虽然我可以在 Chrome 开发工具中看到插槽已正确分配 但 DOM 中什么也没有出现 以前有人见过这个问题吗 定义 class ExampleParent extends HTMLE
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • 扩展 RegExp 以获取文件扩展名

    我知道 已经有很多基于 RegExp 的解决方案 但是我找不到适合我需求的解决方案 我有以下函数来获取 URL 的各个部分 但我还需要文件扩展名 var getPathParts function url var m url match w
  • Service Worker 与 Shared Worker

    Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • 确定 Javascript 中的日期相等性

    我需要找出用户在 Javascript 中选择的两个日期是否相同 日期以字符串 xx xx xxxx 形式传递给该函数 这就是我需要的全部粒度 这是我的代码 var valid true var d1 new Date datein val

随机推荐

  • Hibernate Validator:将验证限制为给定的约束

    我想分两步执行我的实体的验证 虽然我在保存到数据库之前使用 defaultValidatorFactory 来验证实体的所有字段 但我想在前面的步骤中对实体执行部分验证 但我找不到配置我的验证器 或 validatorFactory 的方法
  • reportlabs 中的 Python 饼图

    我指的是这个链接 http www reportlab com snippets 4 用于生成饼图 在此 每个数据的颜色都是预先定义的 即 10 个数据点有 10 种颜色 如果我有 11 个数据点 那么第 11 个数据点将没有颜色怎么办 我
  • 在Winforms中显示动画gif而不锁定文件

    我正在尝试显示各种文件类型的图像 包括动画 gif文件 在我的 Winforms 应用程序中 我也必须能够修改显示的文件 更改文件名 删除它们 问题是一个Picturebox 锁定图像文件 直到应用程序关闭 http support mic
  • Spark 作业在活动阶段显示未知且卡住

    我正在运行 Spark 作业来计算交互 映射后 我按我想要的键进行分组 Spark 保持在挂起状态 而不显示任何错误和阶段的未知信息 我想知道可能是什么原因导致的以及如何检查它 因为我在本地运行并且这是正常的 检查日志没有错误信息 6 01
  • 测试 R 中是否设置了函数的参数

    我有一个函数f它需要两个参数 p1 and p2 如果对于参数p2没有值传递给函数 值p1应使用 2 代替 但是我怎样才能在函数中找出是否给定了值 问题是变量p2如果没有值则不会初始化 因此我无法测试p2 being NULL f lt f
  • 将 fullcalendar 导出到 google calendar、ical 等

    是否可以将 FullCalendar 事件导出到 google 日历或 ical 中 尝试这个 http michalkorecki com content introducing json xml jquery plugin https
  • SQL Server (localdb)\v11.0 解释

    我正在跟进Code First 到现有数据库 http msdn microsoft com en us data jj200620教程并注意到它建议连接到 localdb v11 0出于学习目的 我尝试使用 SQL Management
  • 使用 ARCORE 将图像放置在墙上

    I want to place an image on the wall with ARCore The image is converted from a regular image view I only detect vertical
  • 单个 CASE 语句中的多个列

    我确信这已经被讨论过很多次了 所以请原谅我的重复 我有一个有效的查询 但当前在一个选择中有 6 个 CASE 语句 有人提到 最好的优化方法是将所有 WHEN 条件放在一个 CASE 中 但是 我无法实现这一点 select right R
  • 如何更改 VS Code 状态栏中 >< 远程图标的颜色?

    我安装了 VS Code远程开发扩展 https code visualstudio com docs remote remote overview但绿色 gt lt 状态栏左侧的图标不太适合我喜欢的主题 我如何改变它的颜色 The gt
  • Google App Engine 错误: INVALID_ARGUMENT:超出了以下配额:BACKEND_SERVICES(配额:5,已用:5 + 需要 1)

    我正在尝试在 Google App Engine 灵活环境上部署我的节点应用程序 以前它运行良好 但昨天它开始拒绝给出此错误 错误 INVALID ARGUMENT 以下配额是 超出 BACKEND SERVICES 配额 5 已用 5 需
  • 记录 mysql 中的所有查询

    我可以在 mysql 数据库上打开审核日志记录吗 我基本上想监视一个小时的所有查询 并将日志转储到文件中 除了我在这里遇到的情况之外 运行以下命令是将查询转储到日志文件而无需重新启动的最简单方法 SET global log output
  • 谷歌应用程序引擎 JDO 3

    Google 刚刚为 Google App Engine 推出了 JDO 3 0 它使用 DataNucleus 2 0 我想使用它 因为它可以方便地支持无主关系 我已经尝试了好几天了 但我不知道如何将它与 Google Eclipse 插
  • Swift:UIControls 的 UIStackView 具有不触发的选择器方法

    介绍 我正在创建一个使用自定义视图的应用程序 其中我有一个 UIStackView 来整理 5 个 UIControl 当用户点击其中一个 UIControl 时 下划线会变为动画 并在点击的 UIControl 下方滑动 但是 由于某种原
  • 在圆弧中心绘制位图?

    在我的自定义视图中 我绘制了多个填充的Arc像这样 canvas drawArc oval startAngle sweepAngle true sectorPaint 现在 我想在圆弧的中心绘制一个图标 我是这样开始的 Bitmap bi
  • Media.getduration 返回 -1

    我正在尝试获取音频文件的持续时间 为此 我使用以下代码 fntReproducir function obtenemos una instancia del elemento que contiene la info de cancion
  • Pythonic 方法来计算列表中特定邻居的数量

    我有一个清单 例如 0 0 1 0 0 1 0 我想知道最有效的计算方法是什么1 gt 0过渡 例如 在本例中 答案为 2 在 2 3 和 5 6 位置 我尝试了以下方法 stat 0 0 1 0 0 1 0 pair1 stat 1 pa
  • 如何分析我的代码?

    我想知道如何分析我的代码 我已经阅读了文档 但由于没有给出示例 我无法从中得到任何信息 我有一个很大的代码 并且花费了很多时间 因此我想分析并提高其速度 我还没有在方法中编写我的代码 中间有一些代码 但不完全 我的代码中没有任何 main
  • 当违反 Swing 的线程策略时会发生什么?

    在过去的几年里 我主要在 Eclipse 中完成 UI 开发 Eclipse 在线程访问方面非常保守 任何从 UI 线程外部更改 UI 小部件上的属性 例如颜色 文本 的尝试都会引发异常 我现在正在查看 Swing 中的一个现有程序 该程序
  • 为什么在向根工作区 package.json 添加依赖项时,yarn 会发出警告

    每当我将依赖项添加到工作区项目的根目录时 e g yarn add assets webpack plugin D 我收到以下错误 运行此命令会将依赖项添加到工作区根目录而不是工作区本身 这可能不是您想要的 如果您真的这么想 请通过使用 W