【问题标题】:Deploy a package to different projects将包部署到不同的项目
【发布时间】:2021-03-02 02:46:44
【问题描述】:

在工作中,我们有一个相当复杂的堆栈和情况,可以以某种方式描述为以下架构:

情况是:

我们有一个旧的、维护不善的 PHP/AngularJs 项目,它使用 webpack 进行捆绑。 我们还有另一个项目(“Some React Project”),其中包含一些子项目,所有子项目都捆绑到某个包中,然后与旧的 angularjs 项目捆绑在一起。然后 AngularJs 项目使用一些桥接库从这个包中渲染 React 组件。

此外,我们还有另一个现代 React 项目,它是完全隔离的,有自己的 CI/CD 流程(实际上是另一个应用程序)。

现在我们将使用 react 开发一个新模块,它应该在所有三个项目中都使用。 我们首先考虑通过将其发布到 NPM 来维护它,并且对于每次更新,使用 npm install 将其部署到任何项目中。问题是它有太多的开销。测试和部署非常困难。很难维护,因为 我们的一些项目非常古老,简直就是一场噩梦。

还有其他选择吗? 是否有可能以某种方式部署以打包工件,然后在所有项目中自动更新它?

【问题讨论】:

  • 您指的开销是多少?使用 npm 似乎是一个相当不错的解决方案。只需使用npm link 进行快速测试
  • unpkg.com 也可以在这里提供帮助
  • 最后,您是否建议更新您的公共库应该在您的应用程序中自动更新?这是可行的,不一定可取。
  • 开销是由于我们的 CD 和构建过程很慢并且可能不会很快改变这一事实造成的。测试东西真的很痛苦,即使使用 npm 链接。
  • 没有库架构/托管解决方案可以加快您的 CI..

标签: angularjs reactjs npm micro-frontend


【解决方案1】:

您是否考虑过直接从另一个 repo 安装? 实际上,开销可能是拥有一个自动更新的包。这意味着您永远不能在该软件包中引入重大更改。

{
   "dependencies": {
    ...,
    "common-package": "git+ssh://git@<your_forge_host>/path/to/<repo>.git#<your_tag_or_branch>",
    ...
  },
  ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    相关资源
    最近更新 更多