问题标签 [yarnpkg-v3]
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.
installation - 使用纱线安装的新 Nuxtjs 不起作用
我只是使用(按照文档)创建了一个新的 nuxt 应用程序:
然后我切换到目录并运行(按照文档):
并得到以下错误:
为什么会这样?我正在运行 Node v14.16.0 和 yarn v3.0.0,并且我在 Linux Mint 上。
yarnpkg - 纱线设置版本不起作用。无法从 yarn 3.0.0 更改为 yarn 2.0.0
当前纱线版本是纱线 3.0.0。尝试使用yarn set version 2.0.0-rc.30
. 即使在那个纱线版本之后仍然保持在纱线 3.0.0。
我尝试过的其他选择:
npm uninstall -g yarn
then npm install -g yarn
. 仍然纱线版本保持在 3.0.0。
更新:
- 从根目录删除 yarnrc 文件后,设法将纱线版本升级到 2.0。
heroku - Heroku 没有为 Yarn v3 使用缓存
试图让 Heroku 使用工作区为 Yarn v3 使用缓存模块。我有以下内容:
package.json
:
heroku-buildpack-features
:
Heroku 输出:
我试过添加".yarn/cache"
到cacheDirectories
in package.json
,但它总是说它是空的。
不太确定从这里去哪里。
node.js - yarn pnp 回退到默认要求
我正在编写一些单元测试来检查是否my-module
正确加载了用户区模块external-module
:
现在我遇到了错误:
这是响亮而清晰的,因为测试会在运行时创建node_modules
文件夹中的依赖项,并且yarn
在安装阶段不会对其进行处理。
我找不到一种方法yarn@3.0.1
来回退到文件系统。
我阅读了有关PnPApi的信息,但我没有弄清楚如何使用它们来加载在运行时创建的这个依赖项。你可以帮帮我吗?这是正确的选择还是您看到了更好的方法?
我也尝试过pnpIgnorePatterns选项,但它忽略了整个文件,而不仅仅是一个文件require
在我看来,另一种解决方案是发布test-transport-module
并安装它,但我会避免它。
我yarnrc
的很简单:
你有什么建议吗?
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,它似乎不适用于这种方法)
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
.
我错过了什么吗?
谢谢你。
typescript - 如何在配置了 TS References 的 monorepo 上正确配置 Yarn 2 PnP?
简短:对于下面描述的项目,我怎样才能最好地配置东西以便两个应用程序(客户端+服务器)运行?
我正在研究一个运行时间较长的项目,随着时间的推移演变成一个单一的回购。由于项目是私有的,我无法共享完整的代码,但项目大致具有以下结构,并标有数字,因此我可以在此示例中轻松引用特定文件:
具体来说,客户端包含一个NextJS项目,服务器包含一个NodeJS Express服务器,全局目录包含一些客户端和服务器都使用的共享功能和接口。
客户端和服务器能够通过 typescript 项目引用访问 global,以及使用 typescript 别名映射@global/
到客户端上的 global/src 目录和服务器上的 global/build 目录,如 tsconfig 文件中所示以下。之所以在全局中有一个构建目录,是因为我们在服务器中有一个编译环境;服务器应用程序构建tsc
并运行node server.js
(大致)。这是编号的文件,放在 pastebin 中,所以帖子不是很大:
- /package.json
- /tsconfig.json
- /client/package.json
- /client/tsconfig.json
- /global/package.json
- /global/tsconfig.json
- /server/package.json
8 是一个代码片段,因为我当天的访客粘贴用完了:
这是我们可以为设置做的最好的事情。但是,在我们的代码可以再次工作之前,还存在几个问题。
我们决定将我们的 mono repo 迁移到 yarn pnp,因为我们在运行时遇到了这个问题,在我包含客户端和全局(draft-js
)之间的共享依赖项之后。该 github 评论中的链接媒体文章指出了几种可能的解决方案,但我们没有使用 lerna,我们的整个应用程序也没有使用 webpack(仅客户端,因为 NextJS 内部使用它)。所以我们的解决方案似乎在脚注中,yarn pnp。
但是,我找不到任何有关如何将项目引用从 ts 正确转换为 yarn PnP 依赖项的文档,或者至少找不到如何使一切在 yarn pnp 环境中再次工作的文档。
有了这个设置,我们首先遇到了 global 无法构建的问题。它打印错误,“找不到模块'firebase'或其相应的类型声明”,即使firebase在文件5中明确列为依赖项,我可以在.yarn/cache目录中看到正确版本的zip文件火力基地。我还验证了它正在使用 .pnp.cjs 文件,并且我正在yarn build
那里运行 ( yarn tsc --build
),并yarn -v
打印出我正在使用 v3 canary 版本的预期;我不明白为什么它仍然找不到 firebase 模块。
但是,在那个问题之后,另一个问题是打字稿别名似乎现在应该被替换为portal:
orlink:
依赖项,如他们的文档中所述。这对我们不起作用,它在尝试专门构建服务器时无法解决依赖关系。接下来,我们尝试使用工作空间,因为这似乎也承诺允许客户端和服务器相互访问。这是您现在可以在粘贴中看到的配置。但是,现在当尝试使用此工作区配置编译全局时,我收到类似于此处的第二个片段的错误,关于“无法找到 pnpapi”,表示 global/.pnp.cjs 由根 .pnp.cjs 控制
任何人都可以请建议,我怎样才能最好地建立这种项目?需要什么样的重构,这样我就可以拥有一个包含 NextJS TS 客户端、NodeJS 服务器和共享全局目录的存储库,用于共享 TS 接口和一些功能(因此还有一些共享依赖项可以从中获取类型/功能,例如作为draft-js和firebase)?
如果我可以提供更具体的细节或更好地格式化这个问题,也请对此发表评论。
谢谢!
yarnpkg - 纱线运行 someScript 输出“找不到命令:导出”
我已经升级到 yarn 版本 3.1.0(之前是 1.x 并且一切正常)。
在项目的 package.json 中有一个具有下一个结构的脚本:
跑步时
或者
外壳输出
在 shell 导出命令本身中运行时,会找到并列出找到的环境变量。
使用包含“导出”命令(用于设置环境变量)的纱线运行脚本有什么问题?应该写什么以及它在哪里可以像 1.x 版本一样工作,或者有没有一种新的方法来设置环境?