问题描述
我最初是在Lerna GitHub上问这个问题的,但是我认为可以通过在Stack Overflow上发帖来吸引更多的读者。
我正在尝试与Lerna建立我的第一个monorepo,我需要在几点上做一些澄清。对于我没有使用问题模板的问题,我深表歉意,尽管我的问题并不真正适用于该格式。请让我知道此问题是否更适合StackOverflow,我将关闭该问题并将其发布在此处。
我的包裹结构如下:
├── lerna.json
├── package.json
├── package-lock.json
├── packages
│ ├── main
│ │ ├── build
│ │ ├── dist
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ └── src
│ ├── renderer
│ │ ├── build
│ │ ├── jsconfig.json
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── public
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── logo192.png
│ │ │ ├── logo512.png
│ │ │ ├── manifest.json
│ │ │ └── robots.txt
│ │ ├── README.md
│ │ └── src
│ │ ├── App.css
│ │ ├── index.css
│ │ └── logo.svg
│ └── shared
│ ├── dist
│ ├── lib
│ │ └── constants
│ ├── package.json
│ └── package-lock.json
└── scripts
如您所见,我有三个主要软件包:
- main-这是我的Electron应用程序,它又取决于渲染器和共享器
- renderer-这是我的React应用,它托管在“主”应用中,并且依赖于共享
- shared-包含main和renderer进程都使用的共享元素,因此必须在其中一个之前构建。
在我想要利用monorepo模式的地方,确实与构建脚本的功能有关,因为我的程序包彼此依赖。在实现monorepo模式之前,我的main的package.json构建脚本通过首先构建共享软件包,然后是渲染器,然后将构建的渲染器文件复制到main / build / html中,然后最终构建Electron软件包来运行。基本上看起来像这样:
"build": "cd ../shared; npm run build; cd ../renderer; npm run build; cd ../main; ncp ../renderer/build/. ./build/html",
尽管这仍然可以正常工作,但是我想到了一个monorepo,我应该在顶级package.json上处理所有构建交互,因此,我删除了上述步骤,并使每个构建只关心自己。例如,Electron软件包不再构建共享或渲染器软件包,它仅构建自身,如果缺少这些文件,则在尝试运行Electron二进制文件时将结束,因为它将无法运行。然后,我编写了一个顶层构建脚本,它将像这样同步启动每个软件包构建步骤:
虽然这一切都很好,但是如果我想直接从包文件夹中直接构建主要的Electron包,那么如果缺少必要的前驱文件,则构建可能会失败。
我应该如何处理这种情况?从来没有从软件包仓库中构建并从顶层开始做所有事情?任何建议将不胜感激!请让我知道是否需要澄清。
谢谢
CJ
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)