詳解離線安裝npm包的幾種方法
這段時間的工作主題就是Linux
下的“離線部署”,包括mongo、mysql、postgresql、nodejs、nginx等軟件的離線部署。平常在服務器上借助apt-get就能輕松搞定的事情,在離線環(huán)境下就變得異常艱難。上一篇文章講了使用snap離線安裝軟件的方式,但對于npm包怎么離線部署,snap是無能為力的。本篇文章就來講一講離線安裝npm包的幾種方法。
接下來的部分,我將以離線安裝pm2為例來進行說明。pm2是一個進程守護程序,用于啟動node集群和服務進程出錯時自動重啟,在生產(chǎn)環(huán)境下部署nodejs應用一般都會使用到。
使用 npm link
使用 npm link 的方式是最常用的方法,具體做法是在聯(lián)網(wǎng)機器上下載pm2的源碼并安裝好依賴,拷貝到離線服務器上,最后借助 npm link 將pm2鏈接到全局區(qū)域。
首先,將pm2的源代碼克隆下來:
$ git clone https://github.com/Unitech/pm2.git
然后進入到pm2項目中,安裝好所有的依賴:
$ cd pm2 $ npm install
將安裝好依賴的pm2文件夾拷貝到目標服務器上,進入pm2目錄鏈接到全局區(qū)域:
$ cd pm2 $ npm link
這種方式最關鍵的是借助 npm link 完成鏈接,但 npm link 這條命令本意是設計給開發(fā)人員調(diào)試用的。但開發(fā)人員開發(fā)某個全局命令工具的時候,通過將命令從本地工程目錄鏈接到全局,這樣調(diào)試的時候,可以實時查看本地代碼在全局環(huán)境下的執(zhí)行情況。所以, npm link 的項目需要安裝所有的依賴,包括 dependencies 以及 devDependencies ,而我們?nèi)绻皇鞘褂枚皇情_發(fā)某個包的話,正常情況下不應該安裝 devDependencies 。
總而言之,這種方式優(yōu)點是比較簡單,缺點是安裝了不需要的 devDependencies ,對于有“潔癖”的人是難以忍受的。
使用 npm install <folder>
那有什么方法相比于上一種方法更干凈呢?答案是 npm install <folder> 直接從文件夾安裝。
同樣以pm2為例,首先我們需要準備pm2包,可以在聯(lián)網(wǎng)的機器上執(zhí)行:
$ npm install pm2 --global-style
上面的 --global-style 很關鍵,表示將pm2安裝到node_modules中一個單獨的pm2文件夾中,這樣我們可以方便地將pm2及其所有相關依賴都拷貝出來。也可以使用 npm install pm2 -g 安裝到全局的node_modules,其文件布局是一樣。
然后,將pm2文件拷貝到目標機器上,使用以下命令安裝:
$ npm install pm2/ -g
這種方式不需要安裝多余的 devDependencies ,并且不需要克隆pm2的源碼,比第一種方法更干凈環(huán)保。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
在 Node.js 中使用 async 函數(shù)的方法
利用 async 函數(shù),你可以把基于 Promise 的異步代碼寫得就像同步代碼一樣。一旦你使用 async 關鍵字來定義了一個函數(shù),那你就可以在這個函數(shù)內(nèi)使用 await 關鍵字。下面通過本文給大家分享Node.js 中使用 async 函數(shù)的方法,一起看看吧2017-11-11
Win7系統(tǒng)只能安裝的nodejs13.14,如何安裝高版本nodejs
正常情況下,Win7支持的Node.js最高版本是V13.14,但在開發(fā)過程中,有不少Vue項目或其他需要依賴Node環(huán)境的項目,對Node版本要求都比較高,對此,我們要么重裝操作系統(tǒng)到Win8以上,要么就得想辦法在Win7中安裝高版本的Node,否則很多項目在編譯打包時可能會出現(xiàn)警告信息或失敗2024-11-11
Nodejs中session的簡單使用及通過session實現(xiàn)身份驗證的方法
session的本質(zhì)使用cookie來實現(xiàn)。本文給大家介紹Nodejs中session的簡單使用及通過session實現(xiàn)身份驗證的方法,對node.js session相關知識感興趣的朋友一起學習吧2016-02-02
Node.js基礎入門之path模塊,url模塊,http模塊使用詳解
這篇文章主要為大家介紹了Node.js中的三個模塊(path、url、http)的使用詳解,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-03-03

