问题标签 [yarn-workspaces]

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 投票
1 回答
1961 浏览

npm - Yarn 工作区中的嵌套 package.json

使用纱线工作区时,是否可以使用嵌套package.json文件来解决包子集的依赖关系?避免重复?

cracreate-react-apps 和pkg这些站点使用的软件包在哪里。例如

这将允许我们共享我们的包的共同依赖项......让它们保持同步和最新

0 投票
1 回答
3319 浏览

javascript - 带有来自 Typescript 的路径的 Monorepo 不起作用

我有具有以下文件结构的 monorepo(纱线工作区):

我想使用shared/sanitizeData.tsin 中的函数server/getData.ts

我尝试paths从 Typescript 使用,根据文档它看起来很简单,但我做错了:

server/tsconfig.json

server/getData.js

请问你能帮帮我吗?

0 投票
1 回答
4734 浏览

lerna - “Lerna List”和“Lerna Changed”返回 0 个包

要旨

我有一个 monorepo,我正在使用yarn 工作区lerna来管理它。到目前为止,我没有任何问题。我需要知道自上次发布以来所有更改的包。

问题

所以我运行lerna changeddocs),但这就是它返回的内容:

同样, lerna 在运行时找不到任何包lerna listdocs):

好像有什么东西坏了。但我在我的设置中找不到任何问题。

设置

文件树

lerna.json

包.json

整个存储库都在GitHub 上,如果您想仔细查看的话。

0 投票
1 回答
936 浏览

reactjs - 如何重用带有样式组件的 ThemeProvider?

我在使用yarn workspaces构建的 monorepo 中使用 styled-components 。文件夹结构是这样的:

theme中,我像这样导出默认值ThemeProvider

此代码使用@babel/preset-react进行转译。输出导入package-apackage-b(都是 create-react-app 项目)并添加为顶级组件。

但是在尝试在这两个包中的任何一个中重用主题时出现此错误:

index.js:1375 组件 styled.div (.sc-fzXfNf) 在其样式中使用“props.theme”,但没有通过 prop 或 ThemeProvider 提供主题。

我记录了props并且theme对象为空({})。这是为什么?甚至可以在这里做我想做的事吗?

0 投票
0 回答
360 浏览

reactjs - 我可以在 monorepo 中的包之间重用 React Context 逻辑吗?

我在一个由 yarn 工作区维护的 monorepo 结构下构建我的代码。大致是这样的:

两者都是使用 CRA 创建foo-appbar-appReact 项目。我在包中移动了我的 Hooks,react-hooks所以我不会重复代码。

大多数 Hooks 仍然可以正常工作,但其中一些依赖于一些应用程序范围的上下文状态。具体来说,web3-reactuseWeb3ContextHook。

react-hooks包使用 babel 进行编译,它具有以下配置:

有没有办法重用包之间的上下文逻辑,或者我应该求助于将值作为参数传递给我的 Hooks?

0 投票
1 回答
113 浏览

reactjs - 如何在具有多个 CRA 的 monorepo 中重用“公共”文件夹?

我在 monorepo 的多个包中使用 create-react-app。每个应用程序的“公共”文件夹中都有大量重复的代码和文件,因为它们都有相同的图标、描述、字体等。

有没有办法将“public”文件夹中的部分或全部文件移动到他们自己的包中,通过handlebars.js之类的工具运行它们,最后将它们与 create-react-app 捆绑在一起,而不弹出?

0 投票
1 回答
3008 浏览

typescript - 在纱线工作区的子包中找不到笑话

我正在尝试将 Typescript 项目重构为具有多个包(带有纱线工作区)的 monorepo。在其中一个包 ( packages/compiler) 中,我安装了 jest,并进行了几次测试。他们以前工作过,但在重构后我收到以下错误消息:

找不到名称“它”。您是否需要安装类型定义

试跑者?尝试npm i @types/jestnpm i @types/mocha

我似乎无法弄清楚如何让笑话发挥作用。

我已经在所有测试的包中“本地”安装了。但是如果我node_modules/在 a 之后检查yarn install,我只能看到 中的.bin目录packages/compiler/node_modules,并且可以看到 (ts-)jest 安装在 "root"node_modules中。我认为我需要确保 jest 安装在我的包(packages/compiler/node_modules)的 node_modules 中,而不是安装在根目录中。但我似乎无法弄清楚如何做到这一点(nohoist根 package.json 中的选项不起作用)。

所以我的问题是如何让我的子包中的 jest 工作?

package.json

package.jsonpackages/compiler:_

jest.config.jspackages/compiler

0 投票
2 回答
103 浏览

javascript - 为什么我没有使用 babeljs 获得导入建议

我将 babel-env 与 vscode 和 yarn 工作区一起使用,并且在加载包时(编译后)。

我没有得到任何关于导入自动完成的建议..

我的项目结构:

babelrc 设置:

构建命令:

导入用法示例:

然后,当我输入示例时validation.inputs,我没有收到任何建议..

也许我需要添加一些 babel 扩展,我在文档中搜索但一无所获。

感谢您的帮助。

0 投票
0 回答
33 浏览

yarnpkg - Yarn:配置锁定文件的名称

我们在一个纱线工作区中本地添加了多个存储库

Team1:只需要 Repo1 和 2,所以他们不签出 Repo3

Team2:只需要 Repo1 和 3,所以他们不签出 Repo2

这很好用,但我们对锁定文件有一个问题。如果我在团队 1 并进行纱线安装,那么只会包括 Repo1 和 2 的部门,如果我在团队 2 中,则只会包括 1 和 3 的部门。

所以不可能有一个共享的锁文件,因为我们会不断地覆盖它。

我们现在的想法是我们有多个像这样的锁文件

是否可以使用纱线进行配置,以便我可以更改锁定文件的名称?或者您是否看到任何其他方式可以实现这一目标?

0 投票
1 回答
1210 浏览

react-native - 使用 Yarn 工作区/nohoist 时,如何控制 Yarn 为依赖项的 peerDependency 选择哪个版本?

我有一个带有两个包的 Yarn 工作区watermelon-webwatermelon-native,它们使用最新版本react-redux但不同版本的react. 问题是我无法控制为.peerDependency选择哪个版本的reactYarn 。react-redux

工作区package.json

(需要 nohoist 来防止运行时错误)

watermelon-web/package.json

watermelon-native/package.json

同时,react-redux有一个 peerDependency "react": "^16.8.3"

我想要发生的事情:纱线安装后,watermelon-native/node_modules/react-redux/node_modules不包含react. 这样,当react-redux尝试react在运行时导入时,它会react@16.8.3watermelon-native/node_modules.

实际发生的情况:纱线安装react@16.12.0watermelon-native/node_modules/react-redux/node_modules. 当我运行时watermelon-native,React 报告“无效的钩子调用”,因为watermelon-native正在使用react@16.8.3react-redux正在使用react@16.12.0. (两个包必须使用完全相同的 React 实例才能使 React 挂钩工作。)

如何让 Yarn 以我想要的方式工作?

我已经尝试使用Yarn 选择性依赖解决方案,也就是 中的“解决方案”元素package.json,几乎所有可能的方式,但 Yarn 的行为没有明显的变化。例如,我尝试添加

到工作区package.json

两个简单的“解决方案”是在我的所有包中使用相同的 React 版本(需要降级watermelon-web16.8.3)或放弃使用 Yarn 工作区。这些中的每一个都有我想尽可能避免的缺点。

react(注意:我的代码示例来自 React Native 开发,但问题本身仅适用于 Yarn,与React 无关。react-redux可以替换为具有足够相似依赖关系的任何其他包。)