我有一个项目,目前有 2 个 npm 模块。一个模块将在 Heroku 上运行,而另一个模块将在客户端上运行。这两个模块都是用 Node.js 编写的。现在,它们位于不同的存储库中,但我想将它们放在同一个存储库中。
它们彼此独立,但旨在相互交互,因此我希望将它们放在同一个存储库中,因为它们是同一项目的组件。
问题是 Heroku 推送了存储库中未被 gitignore 文件忽略的所有内容,但我不希望客户端模块只是放在服务器上。
有没有办法告诉 Heroku 我只想部署一个 npm 模块,而不是另一个?
也许使用 git 子模块或其他方式?
最佳答案
听起来你想打破 12 因素架构 ( http://12factor.net/ ),我不推荐这样做。如果模块实际上是独立的,那么它们的源代码应该单独维护,而不是在同一个存储库中。
但是,您可以做您想做的事情。将要保留的包放入 package.json 的“依赖项”列表中,并将其他包放入 package.json 的“devDependency”列表中。使用 Heroku 的默认 NPM_CONFIG_PRODUCTION=true
设置,将不会安装“devDependencies”。
此外,请记住,“在服务器上放置一个额外的模块”不是问题。除非您需要
该模块,否则它不会在运行时影响内存,因此无论您的应用程序是否在文件系统上可用,其行为都会相同。
关于node.js - 一个 git 存储库中的多个模块;只需要向 Heroku 部署一个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31382530/