使用自我维护的NPM模块部署节点应用程序
我正在开发一个非常复杂的应用程序,使用内部开发的开源NPM模块。 为了使主应用程序正常工作,我经常需要更改其中一个模块(额外function,bug修复等)。 目前,我有:
- 一个名为
my_modules
的目录,每个目录都包含一个用于每个模块的git存储库。 例如module1
,module2
。 - 一个名为
my_apps
的目录,其中例如有app1
,其中有module1
作为依赖项 - 在
my_apps/app1/node_modules
我有通过NPM安装的my_apps/app1/node_modules
和module2
- 在服务器中,通过拉动git存储库,运行
npm install
和npm dedupe
,并永久运行服务器进行部署。
在这个阶段,如果我不得不在某个模块中修复某些东西,我:
- 修复它在
my_apps/app1/node_modules/module1
(而不是git) - 当这一切都工作,复制文件到
my_modules/module1
,做一个git push
和npm 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议”的方式来处理这个? 任何最佳实践?