问题标签 [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 投票
0 回答
872 浏览

yarn-workspaces - yarn 工作区部署到 docker 镜像中

我正在使用纱线工作区,我的 package.json 中有这个包:

"workspaces": ["packages/*"] 我正在尝试创建一个要部署的 docker 映像,并且我有以下 Dockerfile:

但我收到以下错误:

错误发生意外错误:“ https://registry.yarnpkg.com/@cutting%2futil:未找到”

@cutting/util 是我的一个工作区包的名称。

所以问题是docker镜像中没有源代码,所以它试图从yarnpkg安装它。

部署到 docker 映像时处理工作区的最佳方法是什么?

说我的结构是:

我想部署deploy_pkg,但我不知道如何创建一个可以复制到 docker 映像中的包

0 投票
0 回答
913 浏览

reactjs - 如何配置纱线工作区

我使用纱线工作区配置了我们的新项目,如下所示

sharednative和的依赖项web。当我们使用 mobx 和装饰器时,我transform-decorators-legacy在和文件夹中.babelrc进行了配置。现在我正在尝试运行并获取构建错误。sharedwebnpm startweb

我认为我们必须对shared文件夹进行 babelify。那么有人遇到过这种问题吗?我们必须如何配置项目?

0 投票
2 回答
2282 浏览

yarnpkg - 使用纱线工作区在monorepo中跨项目共享配置变量?

是否可以在使用纱线工作区设置的 monorepo 的子文件夹之间共享配置变量/环境变量?我们有一个项目的 monorepo,其中几个子文件夹是使用 create-react-app 构建的项目。在这些单独的文件夹中,我们可以使用 .env 文件来指定配置值,当我们在单独级别使用 package.jsons 中的构建/启动脚本时,它们会很好地使用。

但是,我们还有其他子文件夹,它们只是导入 CRA 应用程序的库。我们想在这些库中指定 config/env 变量,但到目前为止还没有找到一种方法来在我们构建或启动导入库的项目时传播这些值。已经在库本身以及 CRA 应用程序根文件夹中尝试了 .env 文件,但似乎没有任何效果......

0 投票
1 回答
393 浏览

yarnpkg - 如何找到被提升到 Yarn 工作区根目录的依赖项的所有者?

如果我这样做,在具有多个纱线工作区的项目中

我得到一个包含各种版本的列表some-package,例如:

在那个例子中,有没有办法找到哪个项目添加了一直提升到根的依赖项some-package@1.0.0?根目录没有package.json文件,所以它一定是从其中一个项目中提升的。

也许提升调试日志?

我知道我可以 grep 整个目录,但这是一个非常大的代码库。

0 投票
4 回答
11334 浏览

node.js - 如何在具有纱线工作空间的 monorepo 中从 nodejs 项目构建 docker 映像

我们目前正在与我们的团队一起为我们的网站研究 CI/CD。我们最近还适应了 monorepo 结构,因为这使我们的依赖关系和概览变得更加容易。目前测试等已为 CI 做好准备,但我现在正在部署。我想创建所需包的 docker 映像。

我考虑的事情:

1) 将完整的 monorepo 拉入 docker 项目,但在我们的项目中运行 yarn install 会导致项目总大小约为 700MB,这主要是由于我们的 react native 应用程序甚至不应该有 docker 映像。此外,每次我们必须部署新版本时,这都会导致很长的图像拉取时间

2)以某种方式捆绑我的项目。使用我们的前端,我们有工作设置,所以应该没问题。但是我只是尝试将 webpack 添加到我们的 express api 并由于这个问题而在我的包中出现错误:https ://github.com/mapbox/node-pre-gyp/issues/308

3)我尝试只在需要的项目中运行 yarn install ,但这仍然会为我的所有项目安装我的 node_modules。

4) 运行 npm 包:pkg。这导致单个文件准备好在具有特定节点版本的特定系统上运行。这确实有效,但我不确定这将如何处理错误和崩溃。

5)另一种解决方案可能是将项目复制到工作区之外并在那里运行纱线安装。这样做的问题是纱线工作空间(隐式链接依赖项)的使用已经过去了。我必须明确添加我的其他工作区依赖项。一种可能性是从某个提交哈希中引用它们,我现在将对其进行测试。(编辑:您似乎不能将子目录作为纱线包引用)

6)???

我想知道我是否缺少一个选项,让某个项目只拥有所需的 node_modules,这样我就可以保持我的 docker 图像很小。

0 投票
1 回答
751 浏览

typescript - 创建反应应用程序,纱线工作区依赖问题

我正在使用 create-react-app、typescript 和 yarn 工作区构建一个多模块项目。

结构是:

lib 项目构建良好,但是当我运行它时,出现以下错误:

随机是伪造者的属性。在编译输出中,faker 的导入语句显示为:

我认为当 webpack 编译 create react app 项目时,它会捆绑我的库的依赖项,但事实并非如此。

我应该如何捆绑我的库,以便它的依赖项在运行时在浏览器中可用?

0 投票
1 回答
1167 浏览

reactjs - React Monorepo 纱线工作区 + 打字稿 + 绝对导入

我在使用纱线工作区和打字稿设置 React 项目时遇到问题。我的文件夹结构是:

我的package.json文件是:

我的问题是:当我webcommon项目中导入文件时,如果它是一个文件,它工作正常,但在使用或文件时.js失败。TypeError: Object(...) is not a function.ts.tsx

关于我可能遗漏的任何想法?

0 投票
1 回答
2685 浏览

yarnpkg - 如何通过yarn workspaces在app中添加多个工作区

我正在创建一个依赖于模块的应用程序。应用程序的文件结构是...

在这里, @app/module-a依赖于@app/core-a并且@app/module-b依赖于@app/core-b

我在演示应用程序中创建了一个工作区"workspaces": ["module-core/packages/*","src/packages/*"]

运行yarn install时提示错误Couldn't find package "@app/module-a@^0.0.0" required by "@app/module-a@0.1.0" on the "npm" registry

工作区管理中是否缺少它?

0 投票
1 回答
5369 浏览

docker - 纱线工作区和泊坞窗

我正在尝试使用纱线工作区,然后将我的应用程序放入 Docker 映像中。

文件夹结构如下所示:

    • Dockerfile
    • 节点模块/
      • libA --> ../libA
    • 库A/
      • ...
    • 应用程序/
      • ...

不幸的是 Docker 不支持符号链接 - 因此无法将根目录中的 node_modules 文件夹复制到 Docker 映像中,即使 Dockerfile 在我的情况下位于根目录中。

我可以做的一件事是使用 .dockerignore 排除符号链接,然后将真实目录复制到图像中。

另一个想法——我更喜欢——是有一个工具用符号链接的实际内容替换符号链接。不知道有没有这样的工具(最好是Javascript包)?

谢谢

0 投票
1 回答
1774 浏览

javascript - 使用纱线工作区将 ui 库与汇总捆绑时导入未定义

对于一个新项目,我开始使用汇总来捆绑 UI 库并在反应应用程序中使用该库。我还在使用 yarn 工作区来管理 UI 库和 Web 应用程序之间的内部依赖关系。

当我尝试在我的 Web 应用程序中使用 UI 库时,导入返回未定义并引发“无法从未定义中获取”错误。

类型错误:无法在 App (C:/Users/user/dev/project/packages/project-web/src/pages/App.jsx:9:6) 读取未定义 [0] 的属性“NavBar”

网络应用代码:

根包.json:

用户界面包.json:

网络应用程序包.json:

汇总配置:

从汇总实际生成的代码:

原始导航栏:

index.js:

.babelrc:

生成的汇总代码看起来没问题,所以我认为这是一个纱线问题,但我不确定。任何帮助,将不胜感激!

问候康奈尔