问题标签 [yarnpkg-v2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
969 浏览

yarnpkg - 使用 Yarn 2 (Berry) 在 Docker 镜像中打包应用程序

我正在将 VueJS 应用程序从“经典”Yarn 1.x 迁移到 Yarn 2。按照安装文档进行操作很简单,并且可以正常工作。

将应用程序打包到 Docker 映像中时会出现棘手的部分。

当前的 Dockerfile

也许我看错了地方,但我找不到任何关于Yarn 2 零安装设置对于 Docker 映像的样子的信息。

您对如何在 a 中使用 Yarn 2 方法有什么建议Dockerfile吗?

0 投票
1 回答
1521 浏览

javascript - 为什么是“纱线 2”纱线 3.0.1?

为什么 yarn 不只是叫 yarn 2 yarn 3 而不是叫yarn 2

或者甚至称它为浆果?我不明白命名约定。

0 投票
1 回答
86 浏览

yarnpkg - 使用 Yarn Berry 更新以前修补的软件包

我在我的项目中使用 Yarn@3.0.2。

我已经使用该命令修补了一个包 (@pkg/pkg),yarn patch @pkg/pkg并且我将它用作patch:协议的 devDependency。

现在我需要为同一个包制作另一个补丁 - 但是当我运行相同的命令时,我得到了Multiple candidate packages found [...].

它在尝试以原始包为目标时有效(使用yarn patch @pkg/pkg@x.x.x),但我似乎无法找到针对修补项目的方法。

那里有任何熟练的纱线开发人员吗?

(可能有用的信息:我不能使用该resolutions字段作为补丁,因为@pkg/pkg 是一个 CLI,它似乎不适用于这种方法)

0 投票
2 回答
98 浏览

node.js - 在 monorepo 中,是否可以将包配置为“如果可以使用未编译的代码”?

我正在玩 Yarn 2,我想做这样的事情。

我有一个结构的monorepo:

wherelib*表示该文件夹是 gitignored,但它是编译代码所在的位置。

在此示例中,我有一个shared-ts由两个应用程序使用的依赖库,app-ts并且app-js.

常规方法

像这样配置 monorepo 的传统方法是,shared-ts我将有一个 package.json,如下所示:

build脚本将在哪里构建index.jsindex.d.ts进入 lib 文件夹。

当两者都app-ts解析app-js包时,他们会查看 lib 文件夹并找到index.jsand 在app-ts这种情况下 - index.d.ts.

这很好用,只是开发人员需要记住build如果他们进行了更改则运行脚本shared-ts,以便更改传播。

这可能会成为问题的地方是存在多层依赖关系。

尝试过 1 点mainsrc/index.ts.

我可以将shared-tspackage.json 更改为

这通常不起作用,普通节点进程将无法解析.ts文件中的语法(例如import关键字)。

潜在的解决方法 -publishConfig

所以我正在考虑,但还没有尝试过的是,使用publishConfig package.json 中的字段

此字段包含仅在从本地源(通过 yarn pack 或诸如 yarn npm publish 之类的发布命令之一)生成包时才考虑的各种设置。

这个想法是:

  • 当您将包发布到 npm 时,lib/index.js将用作 main。代码已准备好使用,无需编译。
  • 如果直接在 monoreposrc/index.ts中使用,将用作 main。例如,这种工作就像您正在运行app-ts一样ts-node

但是,这开始崩溃的地方是:

  • 在开发环境中运行app-js(您没有设置任何额外的语法解析)。

实用的当前最佳解决方案

我目前最好的解决方案是“放弃这种‘不编译’的愿望”——如果开发人员对某些代码进行了更改,他们需要重新运行构建以使更改传播。

0 投票
2 回答
278 浏览

typescript - 使用纱线工作区时,tsc 在 apollo-server 中找不到 express 的声明文件

我正在尝试在其中一个包中使用纱线工作区(版本 3.0.2)、typescript(4.4.3)和 apollo-server(3.3.0)构建一个 monorepo。运行时yarn workspace graphql tsc --build出现以下错误:

然后我尝试安装@types/express,但错误仍然存​​在。我该如何解决这个问题?

我的项目结构如下:

index.ts我尝试编译的文件:

我的tsconfig.json

我的根package.json

package.json的 graphql 包:

0 投票
0 回答
56 浏览

yarnpkg - 纱线无法识别内置包?

我的应用程序中有以下代码片段:

此函数及其类型存在于node_modulesunderhistory和中@types/history

我现在正在尝试使用 PnP 迁移到 Yarn 2,并yarn dlx @yarnpkg/doctor根据 Yarn 的迁移教程尝试修复任何发现。并且医生发现这history是一个未声明的依赖。

所以我yarn add编辑history了,不幸的history是,实际的库与我们在这个应用程序中使用的函数不兼容(window作为参数,而不是上面的options.

我真的不知道我在这里寻找什么。我们的这种用法效果很好,但 Yarn 并不认为这是一个东西,而是认为它是一个未声明的依赖项。但是,添加依赖会破坏我们的函数使用。我该如何解决这种情况?

0 投票
1 回答
727 浏览

npm - 如何在不指定新目录的情况下使用 Yarn 2(或 3)运行 create-react-app?

我试图从 NPM 迁移到 Yarn 的唯一原因是摆脱“node_modules”文件夹。

我正在尝试使用 CRA 工具。但是,在 CRA 上,它建议使用yarn create,这不是 Yarn 2 文档中的命令。经过一番研究,我发现我应该使用yarn dlx命令,相当于npx.

问题是要使用yarn dlx,我必须先有 Yarn 2。Yarn 2 要求我在我的项目目录中本地安装它。这样,我被迫拥有第二层文件夹结构。我想create-react-app在我的桌面上名为 myApp 的文件夹中。但是,我需要创建 myApp 文件夹来安装 Yarn 2,然后才能开始使用 dlx 运行create-react-app.

我错过了什么吗?

谢谢你。

0 投票
1 回答
122 浏览

yarnpkg - 如何使用 Yarn 2+ 列出每个公共工作区?

我正在尝试使用 Yarn 2 重新创建lernalist功能,我需要获取工作区中每个公共包名称的列表。yarn workspaces list可以列出工作场所的所有包,但它会返回每个包,包括私有包。

我还需要可解析格式的结果,例如 JSON,或者只是带有一些换行符的普通输出。

0 投票
1 回答
32 浏览

typescript - “4.3.5-pnpify”和“4.3.5-sdks”有什么区别吗?

我跑之后

打字稿工作区版本已更改

4.3.5-pnpify

4.3.5-sdks

当我跑的时候

它不起作用,因为它已被弃用。

我的纱线版本是 2.4.1

打字稿版本之间有什么重要区别吗?

谢谢。

0 投票
1 回答
163 浏览

yarn-workspaces - 具有对等依赖关系的 Yarn V2 (Berry) 工作区

我正在尝试切换到 V2 中的纱线工作区,但在使用时不断收到Invalid dependency rangeworkspaces:语法错误peerDependencies

我试过使用精确的范围workspaces:*和克拉语法workspaces:^,但没有运气。

Yarn Workspaces 不支持这个吗?问题是我使用带有 peerDependency 的 alpha 包吗?

如果我取出对等依赖项并仅将 devDependency 留在同一个包中(用于在测试中导入包),则同一个包将成功解析

工作区包.json: