问题标签 [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 回答
379 浏览

reactjs - 跨多个应用共享通用 React Native 组件

我将在一个 lerna/yarn 工作区存储库中拥有 2 个独立的 React 应用程序,它们需要使用相同的组件。

在多个应用程序中重用这些组件而不将其发布到单独的私有 NPM 包的最佳方法是什么?

0 投票
2 回答
386 浏览

typescript - 是否可以让 Typescript 知道 package.json 中定义的依赖版本?

我已经意识到,当我在具有特定依赖项的项目上运行 tsc 时,只要在我的系统中节点的模块解析路径中的任何位置存在任何版本的依赖项,编译就会成功。

例如:

  • 在使用包含两个包(project_1project_2)的 yarn 工作区管理的 monorepo
  • 如果project_1在其 package.json中声明了依赖dep_1
  • 运行 yarn install 后,将dep_1添加到根 node_modules

我现在可以在project_2中对dep_1使用 import 语句,而无需将dep_1添加到project_2的 package.json 中,并且 tsc 在编译时不会抱怨。

可以更改此行为以使 Typescript 了解每个项目的 package.json 中声明的依赖项吗?

0 投票
1 回答
432 浏览

javascript - 用于在 React Native Metro 捆绑器中使用动态纱线工作区路径将节点模块列入黑名单的正则表达式

类似于: 如何在 react-native 的打包程序中将我的包的依赖项的特定 node_modules 列入黑名单?

我正在尝试使用需要返回正则表达式的黑名单选项从 Metro 打包程序中排除本机反应。

我需要的是返回类似的东西:

我可以将一个变量插入到 DYNAMIC_PROJECT_DIRECTORY 中,因为它会根据另一个模块的纱线工作区路径而改变。

我只是不熟悉正则表达式!

谢谢

编辑:我尝试在该格式的路径中进行硬编码,但仍然无法将其列入黑名单,因此,如果有人能指出正确的方向来排除该文件夹及其中的所有内容,将不胜感激!

0 投票
1 回答
6922 浏览

yarnpkg - 在纱线工作区中,如何强制解决子项目的依赖关系?

我正在使用一个库,该库支持另一个具有多种版本的库作为对等依赖项。不幸的是,工作区的其中一个子项目引入了与使用该库的子项目不同的版本。结果,它们最终需要不同的版本。

我正在尝试使用选择性分辨率来处理此问题并强制它使用正确的版本(https://yarnpkg.com/lang/en/docs/selective-version-resolutions/),但我没有任何运气。

我可能误解了如何使用这些。

我当前的设置是我有一个根工作区,里面有这些孩子:项目 A package.json(这是问题的根源):

项目 B package.json(这是有问题的应用程序):

@organization/UILibrary(位于工作区之外)package.json 如下所示:

不幸的是,即使项目 B 不依赖于项目 A,当 @organization/UILibrary 被拉入项目 B 时,它也会因为它的需要而获得 backbone.marionette 版本 2.4.1(而项目 B 的本地需要获得 1.8.8)。

我尝试使用解决方案是将 Project B package.json 更新为:

有任何想法吗?基于对纱线问题的一些挖掘以及它们的一些选择性依赖 PR(请参阅https://github.com/yarnpkg/yarn/issues/4874),我相信这可能是由于 UILibrary 的作用域(有斜线) )。

0 投票
1 回答
59 浏览

webpack - 如何修复流程以查看 package.json “module”而不是“main”

我目前正在导入一个纱线工作区包,该包具有在 package.json 中定义的mainand字段module

我的create-react-app设置自动使用module通过 webpack,但flow抱怨@mycompany/utils包未定义。

所以我的问题是如何flow查看module路径而不是main

编辑:我意识到当我第一次问这个问题时我并不清楚

  • 注意:这很重要。我希望能够在开发时更新流类型,而不必每次进行更改时都重新构建。
0 投票
1 回答
989 浏览

reactjs - 无法在 monorepo 中配置 mobx(使用 yarn 工作区)

我正在尝试使用纱线工作区设置一个带有反应和反应本机应用程序的 monorepo。

我的问题是 mobx(和 react-mobx)库。当我在共享包中使用它时,它不起作用。

这是共享库中的简单组件。它应该只呈现一个按钮和数字,并在单击文本时增加数字:

在浏览器(反应)应用程序中,我收到以下错误:

在本机应用程序(react-native)中,我收到以下运行时错误:

我认为问题在于包和链接它们。我尝试了几件事来解决这个问题,但都没有奏效:

  • 添加mobxmobx-react进入workspaces.nohoist
  • 将共享库的所有依赖项移动到peerDependencies
  • 确保使用mobx@4.x它与 react-native 兼容

这是根 package.json:

这是共享包的 package.json:

这是 webapp 的 package.json:

这是 react-native 应用程序的 package.json:

迄今为止,我正在使用最新的纱线版本:1.13.0

我创建了一个 repo,可以复制我在这里遇到的问题。

如果有人能够帮助我让它工作,我将非常感激!

0 投票
1 回答
1563 浏览

yarnpkg - 如何保持纱线工作区依赖关系同步

假设我的yarn workspaces.

假设每个包都有一个dependencyon lodash。我想确保它们都具有相同的lodash版本。

有没有办法在每个 package.json 中做到这一点?

0 投票
1 回答
2158 浏览

angular - 纱线工作区隔离

我在空设置时遇到了一些纱线问题(当我在 npm 上没有任何版本的库时)。

我有一个结构如下的多模块项目:

项目 lib2-ws 和 lib3-ws 需要构建 lib1。

我试图发布(安装、构建和发布) lib1 以便我可以发布lib2lib3

但是当我运行yarn workspace lib1-ws installyarn install(在lib1-ws文件夹内)时,yarn 确实会尝试安装lib2-wslib3-ws,并使用以下错误中断安装操作:

错误在“npm”注册表上找不到“lib2-ws@0.0.1”所需的包“lib1@^0.0.1”。

不知道我错过了什么,是否有一些我可以运行的命令来忽略这个workspace-aggregator东西?

谢谢。

0 投票
0 回答
111 浏览

npm - Lerna with Yarn Workspaces - 如何构建完整的 node_modules

我将 Lerna 与 Yarn Workspaces 和 Serverless 一起使用。

我希望能够在无服务器上发布这个包,这需要一个完整的node_modules文件夹。

node_modules有什么方法可以用 Lerna/Yarn 编译我的本地包,以便在不在 NPM 上发布包的情况下取回完整文件夹?

谢谢

0 投票
1 回答
1752 浏览

npm - 在 monorepo 中强制执行共享依赖项

我们有一个使用lernayarn 工作区的 monorepo 。多个团队为其贡献了包,并且有一些常见的依赖项,我们希望强制人们使用相同的版本。

有哪些选项可以强制所有包使用相同版本的特定依赖项?有没有办法在不编写自定义脚本的情况下实现这一目标?

我想防止这种情况:

我知道您可以同时使用lerna addlerna run添加/升级​​,但是如何防止个人在不知不觉中使他们的包独一无二?