小编btl*_*-sw的帖子

如何在不使用 monorepo 的情况下在多个 vue 应用程序中组织代码(组件)共享

我们正在计划三个类似的 vue 项目。我们已经知道,我们将能够在所有这些代码中重用大量代码(尤其是 vue SFC 和简单的 js 辅助函数),并且我们正在寻找一种在它们之间共享代码的正确方法。

不幸的是,项目的范围相当不同,并且由于读/写权限和可见性管理方面的限制,单一存储库不是一个选择。因此,我们计划将可重用部分作为单独的存储库(并且很可能是私有 npm 包)来处理,这似乎是一种简单的方法。然而,问题是:我们如何创建一种方便的设置,使我们能够在父项目之一的范围内处理共享组件?

项目 A [项目-repo-a]

  • A 的项目特定内容
  • 私有包 A [package-repo-a](可在项目 A 内方便地编辑)
  • 私有包 B [package-repo-b](可在项目 A 内方便地编辑)

项目 B [项目-repo-b]

  • B 的项目特定内容
  • 私有包 B [package-repo-b](可在项目 B 内方便地编辑)
  • 私有包 C [package-repo-c](可在项目 B 内方便地编辑)

在我们的 PHP 项目中,有一个简单的解决方案,我们只需要通过 Composer 和 Preferred-source 选项来重用部分,该选项提供了可以在父应用程序中直接使用的完整 git 存储库。然而,据我们了解,npm 或yarn 中没有首选源。那么我们怎样才能实现我们想要的设置呢?(或者我们是否忽略了这种设置的一个主要缺点?)

我们已经研究/考虑了以下内容(没有找到合适的方法):

  • 纱线/npm链接:我们知道,我们通常可以使用链接,但这似乎是一种非常不方便的方法,同时不断开发共享组件(并且总是必须发布它们以反映最新的更改)。
  • 纱线工作区 / lerna:似乎最接近我们想要的,但是它们似乎(或明确)是为 monorepo 方法设计的。最后,他们没有提供一个解决方案来实际将包的 git 源代码(在单独的存储库中)获取到父项目中(因为没有 --prefer-source 的东西) - 他们是吗?
  • 另外使用composer:只需使用composer拉取git源并从composer供应商文件夹创建yarn工作区。然而,这显然是一种 hacky 方式,并且对于整个依赖管理来说听起来很容易出错
  • 使用yarn安装后脚本来获取所需私有包的git源,但作为作曲家的方式,这在模块解析、依赖管理等方面似乎是相当不可预测的。
  • 使用 git 子模块和纱线工作区:可能是一个解决方案。老实说,我们对 …

code-reuse package-managers npm vue.js yarnpkg

5
推荐指数
1
解决办法
1811
查看次数

标签 统计

code-reuse ×1

npm ×1

package-managers ×1

vue.js ×1

yarnpkg ×1