我们使用纱线链接来引用内部包来加速开发工作流程,这非常有帮助,因为我们不必发布每个更改。
但是,当我们想要使用 创建生产版本时yarn install --prod,它不是复制最新的链接版本,而是复制 npmjs.org(已发布版本)中可用的版本。
你遇到过这个问题吗?有没有办法指示yarn在安装过程中使用本地版本而不是选择最新发布的版本?
我想验证我的项目(package.json和yarn.lock)中的所有依赖项是否都得到满足而无需运行yarn install(构建整个依赖项树并发出网络请求)
起初,我非常希望这样yarn check做。以下命令验证是否满足每个依赖项,package.json 并验证已安装的包是否与yarn.lock文件匹配。
yarn check --integrity --verify-tree
Run Code Online (Sandbox Code Playgroud)
但是,文档说从 yarn v2 开始不推荐使用它,而yarn install --check-files应该使用它。
但是文档--check-files使它看起来像是做了一些完全不同的事情。
纱线安装 --check-files
验证 node_modules 中已安装的文件没有被删除。
我还可以验证运行它本质上是运行一个完整的yarn install命令,所以它在这里没有用。
此外,删除yarn check的拉取请求还提到了 的行为--check-files并不完全直观。
那么在 yarn v2 及更高版本中运行此检查的支持方式是什么?有没有什么办法可以进行轻量级检查package.json,yarn.lock而不必像yarn install那样通过网络构建整个依赖树?
FWIW,提出了一个类似的问题npm,解决方案是使用该--dry-run标志,但该标志似乎不存在于yarn.
我最近升级到 Yarn2 并将以下内容添加到我的.gitignore
.yarn/*
!.yarn/cache
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
Run Code Online (Sandbox Code Playgroud)
我仍然使用nodeLinker: node-modules,但是当我推送代码时,.yarn/cache每当升级软件包时,我都会推送带有新文件的文件夹。
该文件夹应该推送到 Git 还是只推送到我的机器中?请指教。
要对yarn 2推荐的所有软件包进行yarn不可变安装yarn workspaces focus --production --all,有没有一种方法可以只对一个工作区执行此操作?原因是我不想将所有依赖项安装到不同应用程序的 docker 容器中。
我想在打字稿中设置一个包含客户端部分(react-app)、服务器部分(express)和共享库(utils)的项目。我使用 yarn 2 工作区并希望避免使用 larna(如果可能)。不幸的是,几天以来我一直无法使它工作(以及大量的谷歌搜索......)。尝试运行客户端应用程序时,我收到错误消息:
找不到模块“utils”或其相应的类型声明。TS2307
有谁知道我做错了什么?
这是我的项目结构:
package.json(根):
{
"private": true,
"name": "monorepo with shared library and yarn 2 workspaces",
"workspaces": [
"packages/*"
],
"scripts": {
"client": "yarn workspace client start",
"server": "yarn workspace server start",
"prepare": "yarn workspace utils build"
}
}
Run Code Online (Sandbox Code Playgroud)
实用程序/package.json:
{
"name": "utils",
"private": true,
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist"
],
"devDependencies": {
"@types/node": "^14.14.22",
"@typescript-eslint/eslint-plugin": …Run Code Online (Sandbox Code Playgroud) shared-libraries typescript yarn-workspaces yarn-v2 yarnpkg-v2
我正在玩 Yarn 2,我想做这样的事情。
我有一个结构的单一存储库:
/
packages/
shared-ts/
package.json
src/
lib*/
app-ts/
package.json
src/
lib*/
app-js/
package.json
src/
lib*/
Run Code Online (Sandbox Code Playgroud)
wherelib*表示该文件夹被 gitignored,但它是编译后的代码所在的位置。
shared-ts在此示例中,我有一个由两个应用程序使用的依赖库,app-ts并且app-js.
配置像这样的 monorepo 的传统方法是,shared-ts我会有一个 package.json,如下所示:
"main": "lib/index.js"
"scripts" : {
"build": "tsc"
}
Run Code Online (Sandbox Code Playgroud)
脚本将在其中build构建index.js并index.d.ts放入 lib 文件夹中。
当两者app-ts都app-js解析包时,他们会在 lib 文件夹中查找并找到index.js和 的app-ts情况 - index.d.ts.
这工作得很好,除了开发人员需要记住运行build脚本(如果他们进行了更改)shared-ts以便传播更改。
这可能会成为问题的地方是存在多层依赖关系的地方。
main进行工作 …我已经使用yarn 1.x有一段时间了,通过npm安装。今天,我想使用一个插件,经过一番研究后,我安装了像yarn 3.x 这样的插件。我不知道还有其他受支持的纱线版本。老实说,现在我对纱线版本控制完全感到困惑。我对向后兼容性、文件夹结构以及 1.x 之间的差异特别感到困惑;2.x;3.x。我尝试查看每个版本的文档,查看 github 存储库并检查互联网,但我无法找到一些比较/解释为什么会发生这种情况,为什么所有版本都受到支持和维护(在某种程度上)。
我想知道的是:是否有任何网站/文章解释这种奇怪的版本控制的差异和推理?与纱线版本的向后兼容性是什么?推荐的yarn版本是什么?
我知道这不是一个技术问题,但我不知道还能问哪里。我不是在寻求意见,而是在寻求事实或资源(文章、github 问题……)来自己研究这个问题。
我需要获取仅包含yarn 3 的prod 依赖项的列表。在官方文档中找不到仅列出prod 或devDependency 的任何选项。
对应的npm命令是npm list --omit=dev
获取所有依赖项列表的可用命令是:yarn info --recursive
有没有一种解决方法可以仅获取yarn v3的产品依赖项列表?
我一直在绞尽脑汁地尝试在我的 monorepo 中设置 ESlint 配置。我使用 Yarn 3.2.4 作为包管理器。这是包含示例项目的 GitHub 存储库。。这是项目结构:
\n/monorepo\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /configs\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /eslint\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /jest\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /prettier\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 /typescript\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /packages\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 /mypackage\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .eslintrc.js\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\nRun Code Online (Sandbox Code Playgroud)\n具有以下内容:
\n/monorepo/package.json(根包.json)/monorepo\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /configs\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /eslint\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /jest\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 …Run Code Online (Sandbox Code Playgroud) 我目前正在升级到yarn 2,对于经典yarn(yarn 1),我们曾经使用此处--modules-folder描述的方法将包安装在自定义文件夹中
我没有找到等效的选项或使用纱线 2 来做到这一点的方法。
yarnpkg-v2 ×10
yarnpkg ×5
typescript ×3
node.js ×2
package.json ×2
yarn-v2 ×2
eslint ×1
npm ×1
yarn-v3 ×1