簡體   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