使用自我维护的NPM模块部署节点应用程序

我正在开发一个非常复杂的应用程序,使用内部开发的开源NPM模块。 为了使主应用程序正常工作,我经常需要更改其中一个模块(额外function,bug修复等)。 目前,我有:

  • 一个名为my_modules的目录,每个目录都包含一个用于每个模块的git存储库。 例如module1module2
  • 一个名为my_apps的目录,其中例如有app1 ,其中有module1作为依赖项
  • my_apps/app1/node_modules我有通过NPM安装的my_apps/app1/node_modulesmodule2
  • 在服务器中,通过拉动git存储库,运行npm installnpm dedupe ,并永久运行服务器进行部署。

在这个阶段,如果我不得不在某个模块中修复某些东西,我:

  • 修复它在my_apps/app1/node_modules/module1 (而不是git)
  • 当这一切都工作,复制文件到my_modules/module1 ,做一个git pushnpm publish
  • 由于npm install ,服务器将在部署之后提取最新的模块

这是方式,不太理想。 这太容易出错了。 然而:

  • 有一个符号链接链接my_apps/app1/node_modules/module1 => my_modules/module1意味着module1将在自己的path中寻找依赖关系,这往往会导致问题(例如,我需要确保每个模块使用相同的副本module1 ,这是势在必行的)

  • my_apps/app1/node_modules/module1下有一个git repo感觉很危险,以防在模块上意外地覆盖使用NPM的更改。 另外,一旦修正了本地git仓库中的变更,我仍然需要在my_modules/module1 。 是从复制文件转移到…

什么是“build议”的方式来处理这个? 任何最佳实践?