【发布时间】:2016-05-29 10:51:38
【问题描述】:
我正在尝试设置我们的 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
获得我想要的东西的正确方法是什么? IE。从 GitHub 安装/更新 Node.js 应用程序。对于更新,deploy.js 当前设置为运行 npm install 命令以将最新提交到临时文件夹,然后在成功时删除当前文件夹中的代码并从临时文件夹中复制新代码。我也不确定这是否是最好的方法,所以这里的任何指针也很好。
【问题讨论】:
-
您查看过 PM2 部署功能吗?我做了很多你想做的事情
-
这是一个功能请求,但尚未实现
npm download package-name如git clone或apt-getgithub.com/npm/npm/issues/3597