问题标签 [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.
yarnpkg - 使用 Yarn 2 (Berry) 在 Docker 镜像中打包应用程序
我正在将 VueJS 应用程序从“经典”Yarn 1.x 迁移到 Yarn 2。按照安装文档进行操作很简单,并且可以正常工作。
将应用程序打包到 Docker 映像中时会出现棘手的部分。
当前的 Dockerfile
也许我看错了地方,但我找不到任何关于Yarn 2 零安装设置对于 Docker 映像的样子的信息。
您对如何在 a 中使用 Yarn 2 方法有什么建议Dockerfile
吗?
javascript - 为什么是“纱线 2”纱线 3.0.1?
为什么 yarn 不只是叫 yarn 2 yarn 3 而不是叫yarn 2?
或者甚至称它为浆果?我不明白命名约定。
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,它似乎不适用于这种方法)
node.js - 在 monorepo 中,是否可以将包配置为“如果可以使用未编译的代码”?
我正在玩 Yarn 2,我想做这样的事情。
我有一个结构的monorepo:
wherelib*
表示该文件夹是 gitignored,但它是编译代码所在的位置。
在此示例中,我有一个shared-ts
由两个应用程序使用的依赖库,app-ts
并且app-js
.
常规方法
像这样配置 monorepo 的传统方法是,shared-ts
我将有一个 package.json,如下所示:
build
脚本将在哪里构建index.js
并index.d.ts
进入 lib 文件夹。
当两者都app-ts
解析app-js
包时,他们会查看 lib 文件夹并找到index.js
and 在app-ts
这种情况下 - index.d.ts
.
这很好用,只是开发人员需要记住build
如果他们进行了更改则运行脚本shared-ts
,以便更改传播。
这可能会成为问题的地方是存在多层依赖关系。
尝试过 1 点main
到src/index.ts
.
我可以将shared-ts
package.json 更改为
这通常不起作用,普通节点进程将无法解析.ts
文件中的语法(例如import
关键字)。
潜在的解决方法 -publishConfig
所以我正在考虑,但还没有尝试过的是,使用publishConfig
package.json 中的字段
此字段包含仅在从本地源(通过 yarn pack 或诸如 yarn npm publish 之类的发布命令之一)生成包时才考虑的各种设置。
这个想法是:
- 当您将包发布到 npm 时,
lib/index.js
将用作 main。代码已准备好使用,无需编译。 - 如果直接在 monorepo
src/index.ts
中使用,将用作 main。例如,这种工作就像您正在运行app-ts
一样ts-node
。
但是,这开始崩溃的地方是:
- 在开发环境中运行
app-js
(您没有设置任何额外的语法解析)。
实用的当前最佳解决方案
我目前最好的解决方案是“放弃这种‘不编译’的愿望”——如果开发人员对某些代码进行了更改,他们需要重新运行构建以使更改传播。
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 包:
yarnpkg - 纱线无法识别内置包?
我的应用程序中有以下代码片段:
此函数及其类型存在于node_modules
underhistory
和中@types/history
:
我现在正在尝试使用 PnP 迁移到 Yarn 2,并yarn dlx @yarnpkg/doctor
根据 Yarn 的迁移教程尝试修复任何发现。并且医生发现这history
是一个未声明的依赖。
所以我yarn add
编辑history
了,不幸的history
是,实际的库与我们在这个应用程序中使用的函数不兼容(window
作为参数,而不是上面的options
.
我真的不知道我在这里寻找什么。我们的这种用法效果很好,但 Yarn 并不认为这是一个东西,而是认为它是一个未声明的依赖项。但是,添加依赖会破坏我们的函数使用。我该如何解决这种情况?
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
.
我错过了什么吗?
谢谢你。
yarnpkg - 如何使用 Yarn 2+ 列出每个公共工作区?
我正在尝试使用 Yarn 2 重新创建lerna
的list
功能,我需要获取工作区中每个公共包名称的列表。yarn workspaces list
可以列出工作场所的所有包,但它会返回每个包,包括私有包。
我还需要可解析格式的结果,例如 JSON,或者只是带有一些换行符的普通输出。
typescript - “4.3.5-pnpify”和“4.3.5-sdks”有什么区别吗?
我跑之后
打字稿工作区版本已更改
从
4.3.5-pnpify
到
4.3.5-sdks
当我跑的时候
它不起作用,因为它已被弃用。
我的纱线版本是 2.4.1
打字稿版本之间有什么重要区别吗?
谢谢。
yarn-workspaces - 具有对等依赖关系的 Yarn V2 (Berry) 工作区
我正在尝试切换到 V2 中的纱线工作区,但在使用时不断收到Invalid dependency range
新workspaces:
语法错误peerDependencies
我试过使用精确的范围workspaces:*
和克拉语法workspaces:^
,但没有运气。
Yarn Workspaces 不支持这个吗?问题是我使用带有 peerDependency 的 alpha 包吗?
如果我取出对等依赖项并仅将 devDependency 留在同一个包中(用于在测试中导入包),则同一个包将成功解析
工作区包.json: