问题标签 [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.
npm - Yarn 工作区中的嵌套 package.json
使用纱线工作区时,是否可以使用嵌套package.json
文件来解决包子集的依赖关系?避免重复?
cra
create-react-apps 和pkg
这些站点使用的软件包在哪里。例如
这将允许我们共享我们的包的共同依赖项......让它们保持同步和最新
javascript - 带有来自 Typescript 的路径的 Monorepo 不起作用
我有具有以下文件结构的 monorepo(纱线工作区):
我想使用shared/sanitizeData.ts
in 中的函数server/getData.ts
我尝试paths
从 Typescript 使用,根据文档它看起来很简单,但我做错了:
server/tsconfig.json
:
server/getData.js
:
请问你能帮帮我吗?
reactjs - 如何重用带有样式组件的 ThemeProvider?
我在使用yarn workspaces构建的 monorepo 中使用 styled-components 。文件夹结构是这样的:
在theme
中,我像这样导出默认值ThemeProvider
:
此代码使用@babel/preset-react进行转译。输出导入package-a
和package-b
(都是 create-react-app 项目)并添加为顶级组件。
但是在尝试在这两个包中的任何一个中重用主题时出现此错误:
index.js:1375 组件 styled.div (.sc-fzXfNf) 在其样式中使用“props.theme”,但没有通过 prop 或 ThemeProvider 提供主题。
我记录了props
并且theme
对象为空({})。这是为什么?甚至可以在这里做我想做的事吗?
reactjs - 我可以在 monorepo 中的包之间重用 React Context 逻辑吗?
我在一个由 yarn 工作区维护的 monorepo 结构下构建我的代码。大致是这样的:
两者都是使用 CRA 创建foo-app
的bar-app
React 项目。我在包中移动了我的 Hooks,react-hooks
所以我不会重复代码。
大多数 Hooks 仍然可以正常工作,但其中一些依赖于一些应用程序范围的上下文状态。具体来说,web3-react的useWeb3Context
Hook。
该react-hooks
包使用 babel 进行编译,它具有以下配置:
有没有办法重用包之间的上下文逻辑,或者我应该求助于将值作为参数传递给我的 Hooks?
reactjs - 如何在具有多个 CRA 的 monorepo 中重用“公共”文件夹?
我在 monorepo 的多个包中使用 create-react-app。每个应用程序的“公共”文件夹中都有大量重复的代码和文件,因为它们都有相同的图标、描述、字体等。
有没有办法将“public”文件夹中的部分或全部文件移动到他们自己的包中,通过handlebars.js之类的工具运行它们,最后将它们与 create-react-app 捆绑在一起,而不弹出?
typescript - 在纱线工作区的子包中找不到笑话
我正在尝试将 Typescript 项目重构为具有多个包(带有纱线工作区)的 monorepo。在其中一个包 ( packages/compiler
) 中,我安装了 jest,并进行了几次测试。他们以前工作过,但在重构后我收到以下错误消息:
找不到名称“它”。您是否需要安装类型定义
试跑者?尝试
npm i @types/jest
或npm 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.json
在packages/compiler
:_
而jest.config.js
在packages/compiler
:
javascript - 为什么我没有使用 babeljs 获得导入建议
我将 babel-env 与 vscode 和 yarn 工作区一起使用,并且在加载包时(编译后)。
我没有得到任何关于导入自动完成的建议..
我的项目结构:
babelrc 设置:
构建命令:
导入用法示例:
然后,当我输入示例时validation.inputs
,我没有收到任何建议..
也许我需要添加一些 babel 扩展,我在文档中搜索但一无所获。
感谢您的帮助。
yarnpkg - Yarn:配置锁定文件的名称
我们在一个纱线工作区中本地添加了多个存储库
Team1:只需要 Repo1 和 2,所以他们不签出 Repo3
Team2:只需要 Repo1 和 3,所以他们不签出 Repo2
这很好用,但我们对锁定文件有一个问题。如果我在团队 1 并进行纱线安装,那么只会包括 Repo1 和 2 的部门,如果我在团队 2 中,则只会包括 1 和 3 的部门。
所以不可能有一个共享的锁文件,因为我们会不断地覆盖它。
我们现在的想法是我们有多个像这样的锁文件
是否可以使用纱线进行配置,以便我可以更改锁定文件的名称?或者您是否看到任何其他方式可以实现这一目标?
react-native - 使用 Yarn 工作区/nohoist 时,如何控制 Yarn 为依赖项的 peerDependency 选择哪个版本?
我有一个带有两个包的 Yarn 工作区watermelon-web
和watermelon-native
,它们使用最新版本react-redux
但不同版本的react
. 问题是我无法控制为.peerDependency选择哪个版本的react
Yarn 。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.3
从watermelon-native/node_modules
.
实际发生的情况:纱线安装react@16.12.0
在watermelon-native/node_modules/react-redux/node_modules
. 当我运行时watermelon-native
,React 报告“无效的钩子调用”,因为watermelon-native
正在使用react@16.8.3
但react-redux
正在使用react@16.12.0
. (两个包必须使用完全相同的 React 实例才能使 React 挂钩工作。)
如何让 Yarn 以我想要的方式工作?
我已经尝试使用Yarn 选择性依赖解决方案,也就是 中的“解决方案”元素package.json
,几乎所有可能的方式,但 Yarn 的行为没有明显的变化。例如,我尝试添加
到工作区package.json
。
两个简单的“解决方案”是在我的所有包中使用相同的 React 版本(需要降级watermelon-web
到16.8.3
)或放弃使用 Yarn 工作区。这些中的每一个都有我想尽可能避免的缺点。
react
(注意:我的代码示例来自 React Native 开发,但问题本身仅适用于 Yarn,与React 无关。react-redux
可以替换为具有足够相似依赖关系的任何其他包。)