问题标签 [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.
yarn-workspaces - 修改纱线的锁定文件的问题
我正在使用 yarn berry,特别是 3.0.0 版,但在 2.4.2 中也遇到了同样的问题。当我yarn install --immutable
在 CI 中运行时,我得到了错误:
[2021-07-27T04:51:41Z] ➤ YN0028: │ The lockfile would have been modified by this install, which is explicitly forbidden
.
但是,当我在yarn install
本地运行时,文件没有任何更改yarn.lock
。我在12.22.3
本地机器和 CI 机器上运行相同的节点版本。唯一的另一个区别是,在 CI 中,我在Alpine
图像中运行它,而我的本地机器是 Mac,但我没有读到这会导致问题。
我能做些什么来进一步调试呢?
typescript - 如何运行使用 Yarn 2 安装的软件包二进制文件
我正在试一试 Yarn 2/Berry,但我无法弄清楚如何运行由软件包安装的二进制文件。
我专门尝试运行 GRPC 打字稿编译。我在与 Yarn 1 一起使用的 bash 脚本中有以下命令:
但是当我搬到 Yarn 2/Berry 时,我得到一个./node_modules/.bin/protoc-gen-ts
不存在的错误:
当我运行时,yarn bin
我看到以下内容:
当我跑步时,yarn bin protoc-gen-ts
我看到
它告诉我二进制文件安装在一个 zip 文件中(假设我没看错)。我怎样才能像在它所在的经典纱线中一样“公开”这个二进制文件node_modules/.bin
?
yarnpkg - yarn2 中的自定义模块文件夹
我目前正在升级到纱线 2,并且使用经典纱线(纱线 1),我们曾经使用此处--modules-folder
描述的方法将软件包安装在自定义文件夹中
我没有找到等效的选项或使用纱线 2 的方法。
security - 如何在不破坏身份验证的情况下将注册表与 Yarn 2 中的范围相关联?
本文建议.npmrc
在您的项目中添加配置以将作用域与私有注册表相关联,以降低 npm 替换攻击的风险(其中有人可能故意发布具有相同名称的恶意公共包)。
我们如何在 Yarn 2 项目中实现类似的效果?我尝试.yarnrc.yml
在我的项目根目录中添加一个文件:
我们还~/.yarnrc.yml
为每个具有类似配置的开发人员提供了一个主目录,但另外还有一个适当npmAuthToken
的身份验证。
但是,当我执行 a 时,该范围内的包yarn install
会出现Invalid authentication (as an anonymous user)
错误。大概项目特定.yarnrc.yml
覆盖了 per-user 的设置~/.yarnrc.yml
,所以身份验证信息不再存在?
我所寻求的缓解措施是,如果开发人员忘记运行yarn npm login
,那么它不会检查公共注册表中特定范围内的包。有没有办法在 Yarn 2 中做到这一点?
yarnpkg - 如何使用 Yarn 2 添加本地 .tgz 文件?
我正在尝试使用 Yarn 2 将模块安装到离线计算机上。
我有.tgz
NPM 模块的文件。看起来它可以用 Yarn 1.x 完成,但似乎不适用于 Yarn 2。
我将文件lowdb-1.0.0.tgz
放入项目文件夹的根目录进行测试并尝试了这些不起作用(项目配置为 Yarn 2):
yarn add lowdb-1.0.0.tgz
yarn add ./lowdb-1.0.0.tgz
yarn add file:./lowdb-1.0.0.tgz
这可能与Yarn 2有关吗?或者是否有另一种方法可以使用 Yarn 2 下载的 assets/bundles/tgz 将模块直接安装到离线计算机上?
typescript - 在 JS 中工作时,在 Typescript 项目中添加本地依赖项不起作用
我已经能够通过运行将本地包导入到项目中yarn link ../path
,这会在 中添加一个resolution
字段来package.json
告诉捆绑器在哪里可以找到包,基本上是给它一个别名。
奇怪的是,虽然这在我正在导入 from 的文件时有效.jsx
,但没有更改任何其他内容,如果我正在导入 from .tsx
,则找不到该模块。
所以罪魁祸首可能是 ts-loader、Typescript(它如何处理导入)、webpack 或 yarn。我不知道这是因为我做错了什么还是这是一个错误。
所以文件夹结构可能是:
我webpack.config.js
在 ProjectMain中有以下内容
ProjectToImport 的index.js
样子
yarnpkg - yarn 无法解析 babel-loader 虽然它已经安装
我想将包管理器从 npm 迁移到 yarn berry。
使用 npm,我的构建脚本成功了。
但是,当我安装 yarn 并使用它运行脚本时,它失败了,因为没有babel-loader
and pug-loader
,即使我已经安装了它们。
这是我的项目。develop
分支使用 npm 并feature/yarn
使用 yarn berry。使用纱线浆果,我无法运行watch:client
和watch:ssr
编写脚本。
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
,但它总是说它是空的。
不太确定从这里去哪里。
typescript - 打字稿编译器找不到带有纱线的节点-找不到“节点”的类型定义文件
我安装了@types/node。我正在使用纱线 2 (PnP)。好像 Typescript 找不到 @types/node 包?
yarn build
使用构建脚本运行时会webpack
显示有关无法解析模块(路径、缓冲区等)的错误
跑步tsc
节目TS2688: Cannot find type definition file for 'node'.
但是,运行“ts-node”确实可以正常工作。
我的 tsconfig.json 如下:
我的 webpack.config.js