0

我一直在为设计系统开发 PoC monorepo,在该系统中我尝试使用反应原语 + 反应草图应用程序渲染组件以绘制草图。我将 Lerna 与 yarn 工作区结合使用来管理不同包的依赖关系,这意味着文件夹结构如下所示:

my-repo/
package.json
lerna.json
tsconfig.json
(...)
node_modules
packages/
  react-sketchapp-package/
    package.json
    (...)
  web-components-package/
    package.json
    (...)

在遇到两个包中具有相同依赖项(样式化组件)的问题后,我切换到将 lerna 与纱线工作区结合使用。这意味着您在 monorepo 的根目录中而不是包中拥有 node_modules。它解决了我以前使用样式组件时遇到的问题,它在 web-components-repo 中就像一个魅力,但是当尝试在 react-sketchapp-repo 中运行任何脚本时,我收到以下错误:

src/Document.tsx(50,46):错误 TS2304:找不到名称“上下文”。npm 错误!代码 ELIFECYCLE npm 错误!errno 2 npm 错误!@react-sketchapp-package@1.0.0 打字稿:一次:tsc npm ERR!退出状态 2 npm ERR!npm 错误!@react-sketchapp-package@1.0.0 typescript:once 脚本失败。npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。npm WARN 本地 package.json 存在,但缺少 node_modules,你的意思是要安装吗?

切换到 Yarn 工作区后,似乎 react-sketchapp 包没有找到 node_modules 依赖项。我尝试使用以下方法在 react-sketchapp-package 中创建指向 node_modules 的符号链接:

ln -s ../../node_modules ./node_modules

但这也不起作用,仍然是同样的问题......

由于这是我对 Lerna 和工作区的第一次体验,我将回顾我的步骤,看看是否有任何我错过的配置,但如果有人对如何解决这个问题有任何想法,我将不胜感激!

4

1 回答 1

0

更新:1个月后

我的仓库的一个市长问题是我忘记"packages":["packages/*"]在根目录中添加到我的 lerna.json。可能还缺少其他一些配置,但是当我将我的sketchapp-repo 迁移到另一个monorepo 时,工作区配置正确,问题就消失了。我也遇到了一些冲突依赖的问题。看看这个 repo 以了解基本设置所需的依赖项可能会很好: https://github.com/airbnb/react-sketchapp/blob/master/examples/basic-setup-typescript/package。 json

于 2019-04-17T13:05:52.223 回答