NPM 7.0.0 工作区是否不再需要 Lerna?
我对这个新的 npm 功能并没有真正的经验。
Npm/rfcs写道:
首先也是最重要的是,可以选择将问题集留给用户空间来解决,已经有非常流行的项目 Lerna 提供了其中的一些功能。
还可以选择仅支持此提案的安装(或 Lerna 命名的引导程序)方面,采用功能不太丰富的方法,但仍然可以实现改善管理多个子包的用户体验的基本目标,但是从在这个 RFC 的研究阶段收集的所有反馈来看,这个替代方案对于所涉及的维护者社区来说不太理想。
很高兴每一个答案和解释:)
我们目前正在与我们的团队一起在我们的网站上查看CI/CD.我们最近也适应了monorepo结构,因为这使我们的依赖和概述更容易.目前测试等已准备好用于CI,但我现在正在进行部署.我想创建所需包的docker镜像.
我考虑的事情:
1)将完整的monorepo拉入docker项目,但在我们的项目中运行yarn安装导致总项目大小约为700MB,这主要是由于我们的本机应用程序甚至不应该有docker镜像.此外,每次我们必须部署新版本时,这都会导致图像拉长时间过长
2)以某种方式捆绑我的项目.我们的前端我们有工作设置,所以应该没问题.但是我只是尝试将webpack添加到我们的快速api中,并因此问题在我的捆绑包中出现错误:https://github.com/mapbox/node-pre-gyp/issues/308
3)我尝试仅在所需项目中运行yarn安装,但这仍将为我的所有项目安装我的node_modules.
4)运行npm包:pkg.这导致单个文件准备好在具有特定节点版本的特定系统上运行.这可行,但我不确定这将如何处理错误和崩溃.
5)另一种解决方案是将项目复制出工作区并在那里运行纱线安装.这个问题是使用纱线工作区(隐式链接的依赖关系)就好了.我必须明确地添加我的其他工作区依赖项.一种可能性是从某个提交哈希引用它们,我现在要测试它.(编辑:您似乎无法将子目录引用为纱线包)
6)???
我想知道我是否缺少一个选项,只为某个项目只有所需的node_modules,所以我可以保持我的docker图像小.