繁体   English   中英

从GitHub安装Node.js应用程序而不安装到node_modules

[英]Installing a Node.js app from GitHub without installing to node_modules

我正在尝试设置Node.js服务器应用程序,以便当GitHub上有推送/发布时,我们可以自动更新应用程序。 目前,该应用程序的一部分提供了一个服务器,该服务器侦听GitHub事件,并将从GitHub获取新版本并替换当前版本,并在安装新版本时使用recluster重新启动主服务器应用程序。 我遇到的问题是,我认为可以使用带有GitHub URL的npm install来下载新版本及其依赖项。 问题在于该应用程序已下载到node_modules的子目录中,因此它与其余模块一起安装,而不是安装在根目录中,就像通常有一个Node.js应用程序一样。 即,而不是通常的:

/
|-index.js (the main server app)
|-deploy.js (the wrapper which runs index.js using recluster and listens for GitHub webhooks to update the app)
|-package.json
|-node_modules/
    |-module1
    |-module2
    |-etc.

进行npm install git://github.com/user/repo可以像这样安装应用程序:

/
|-node_modules/
    |-app_name/
    |     |-index.js
    |     |-deploy.js
    |     |-package.json
    |-module1
    |-module2
    |-etc

什么是我想要的正确方法? 即从GitHub安装/更新Node.js应用。 为了进行更新,当前已将deploy.js设置为针对最新提交运行npm install命令到临时文件夹,然后成功删除当前文件夹中的代码,并从临时文件夹复制新代码。 我也不确定这是否是最好的方法,因此这里的任何指针也将是很好的。

我可能会选择git pull && npm update方法。 npm install git://github.com/user/repo可能每次都会从头开始获取源代码及其所有依赖项。 另一方面, git pull && npm update将仅获取对代码所做的更改,并将安装/更新已更改的依赖项。 因此,这似乎是一种更有效的自我更新方式,并且不会出现node_modules子目录问题。

您可以看一下hubot自我更新方式,以了解如何做到这一点: https : //github.com/github/hubot-scripts/blob/master/src/scripts/update.coffee

但是,这种方法的缺点是,如果您推送错误的更新,并且服务器在自我更新后无法启动,则服务器将卡在该版本上,因为它将不再能够自我更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM