【问题标题】:Is there a standard way to serve latest version of static files from a git repository with Node.js?是否有一种标准方法可以使用 Node.js 从 git 存储库中提供最新版本的静态文件?
【发布时间】:2020-07-10 12:26:48
【问题描述】:

是否有任何标准/常规方式(包/库、模式等)从 Node.js 中的给定 git 存储库提供某些静态文件的最新版本?

到目前为止,我的想法是在 npm start 处克隆存储库从那里获取我需要的文件,然后提供一个 webhook 在存储库收到提交时调用,然后拉取更改,以便即使在应用程序运行时文件也会得到更新。

这似乎可行,但我不想重新发明轮子,如果它已经存在的话。如果有一种方法已经相对广为人知,一种传统模式或一个包已经做到了这一点,那么明智的做法是使用它,而不必费心实现细节、修复安全漏洞并使其保持最新状态。

另外,当我们在做这件事的时候,我有什么理由不应该一开始就这样做吗?

编辑:
我可能应该解释一下我为什么要这样做。
我基本上有一个网络应用程序(没什么太复杂的,这里和那里有几条路线),我们称之为example.com,还有一些“自包含网站”(即,出于所有意图和目的可以独立存在的静态文件的集合主网站和彼此)。

我可以将它们分别放在它们的子域中,但这可能意味着使用更多的应用程序实例和时间来提供一些静态文件,所以我想在该应用程序上以它们自己的路径提供这些“子网站” ,如example.com/sub-site1example.com/sub-site2 等,与主example.com 来自同一应用程序实例,以免产生更高的托管成本。

我还可以修改这些静态网站以将它们包装在 Node.js 包中并将这些包安装在主应用程序中,但我希望它们保持干净、简单、静态文件,与它们所服务的平台无关。

这让我可以选择将一堆文件移动到主应用程序,但我不想在每次更新这些网站时手动重新启动应用程序,或者更糟糕的是,手动更新带有新版本静态文件的主应用程序。

【问题讨论】:

  • 我正在开发一个项目,该项目实际上在挂载点上呈现分支/标签/修订版的更新内容。它是基于 FUSE 的。随意试一试:github.com/eantoranz/gitmod

标签: node.js git conventions static-files


【解决方案1】:

是否有任何标准/常规方式(包/库、模式等)从 Node.js 中的给定 git 存储库提供某些静态文件的最新版本?

这类任务没有标准。最好的方法是使用官方的 Github SDK,因为有一个getContent 方法可以达到此目的。

另外,当我们在做这件事的时候,我有什么理由不应该首先这样做吗?

可以删除 Github 存储库,但不能删除 npm 包(因此有一个 unpublish policy)。 我不知道您的用例,但这些文件对您的应用程序至关重要? 如果是这样,像这样依赖于临时存储库是有风险的:您可以只分叉并使用 Github action 保持分叉是最新的

【讨论】:

  • 我在编辑中详细说明了我提出这个问题的动机 :) 它包括了我为什么要避免使用 npm 包的原因。现在我正在使用 Gitlab 进行回购。我会调查他们是否有类似的东西。你有一个很好的观点,即不能保证存储库是可靠的。虽然这些文件对应用程序来说并不重要,但我仍然需要决定如何处理它们不存在的情况,直到现在我还没有意识到,这只是我担心可能发生的另一种复杂性。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
相关资源
最近更新 更多