Nodejs全域性安裝和本地安裝的不同之處

Nodejs全域性安裝和本地安裝的不同之處

上一篇文章《Nodejs中 npm常用命令詳解》主要是整理了最常使用的npm命令及相關介紹,其中有提到全域性安裝(npm install gulp -g)和本地安裝(npm install gulp),下圖來自Gulp中文網入門指南,可以看出全域性安裝後gulp後還要進行本地安裝,一開始我疑惑了?為什麼全域性安裝的gulp麼,還要進行本地安裝,難道不能在專案中直接呼叫本地安裝的包?

帶著疑惑,在google找了相關文件,雜七雜八湊合起來才有了點眉目,讓我們一起解開nodejs全域性安裝和本地安裝的一些疑惑,如果有講錯的地方,還請大家留意指正。

本文以Windows平臺上做測試,以gulp為示例做教程

什麼是全域性安裝(global)安裝位置

全域性安裝方式是鍵入命令:npm install gulp -g 或npm install gulp–global,其中引數-g的含義是代表安裝到全域性環境裡面,包安裝在Node安裝目錄下的node_modules資料夾中,一般在 \Users\使用者名稱\AppData\Roaming\ 目錄下,可以使用npm root -g檢視全域性安裝目錄。

呼叫方式

全域性安裝後可以供命令列(command line)使用,使用者可以在命令列中直接執行該元件包支援的命令,如下圖全域性安裝gulp後的cmd檔案

什麼是本地安裝(local)安裝位置

本地安裝方式是鍵入命令:npm install gulp 或npm install gulp –save-dev等,其中引數–save-dev的含義是代表把你的安裝包資訊寫入package.json檔案的devDependencies欄位中,包安裝在指定專案的node_modules資料夾下。

呼叫方式

本地安裝後可以直接通過require()的方式引入專案中node_modules目錄下的模組,如下示例,本地安裝後直接在gulpfile.js中require(‘gulp’)。

為什麼全域性安裝後還要本地安裝

僅全域性安裝是夠嗎

1.在js例項程式碼中,預設下node.js會在NODE_PATH和目前js所在專案下的node_modules資料夾下去尋找模組,因此,如果只是全域性安裝,不能直接通過require()的方式去引用模組,需要手動解決包路徑的配置問題,當然你也可以複製全域性安裝的node_modules資料夾到專案下,還有辦法可以選擇將環境變數的NODE_PATH設定為C:\Program Files\nodejs。

2.對於包的更新不好管理,可能你需要為每個包重新命名,如[email protected][email protected]…,為了區別不同專案使用指定的包,保證模組之間的相互依賴(這塊下面會介紹),區別每個專案正常執行。

因此,不推薦只全域性安裝。

本地安裝的重要性

最早的node.js/npm實際上是全域性的,包括現在還相容NODE_PATH,但是不能支援全域性多版本,於是nodejs團隊改成本地安裝的方法可能就是為了保證不同版本包之間的相互依賴,什麼意思呢,舉個例子weui元件中相互依賴的包就有12個

其中依賴包的指定版本號如下,不可輕易去修改,因為不同版本包對應依賴包的版本的功能有所差別,如果修改指定的版本來執行weui,就可能會編譯出錯等bug。

再舉個例子:

複製程式碼 程式碼如下:包版本為:
A(0.0.1)依賴B(0.0.2),B(0.0.1)依賴C(0.0.3)一段時間原作者更新後,包版本為:A(1.0.1)依賴B(1.0.0),B(1.0.0)依賴C(1.0.0)

每一次的更新可能帶來不一樣的功能,在多人合作、釋出模組到npmjs社群、上傳到github給其他人使用時,保留模組的版本資訊可用於下載指定的版本號顯得特別重要。

本地安裝可以讓每個專案擁有獨立的包,不受全域性包的影響,方便專案的移動、複製、打包等,保證不同版本包之間的相互依賴,這些優點是全域性安裝難以做到的。

另外,據node團隊介紹,本地安裝包對於專案的載入會更快。

有優點也少不了缺點,如每次新專案都要本地安裝所依賴的包,安裝包時間相對較長,一來是包太大導致下載慢;二是浪費了硬碟空間,不過現在電腦硬碟動不動就幾個T,你還會在意節省這點空間嗎?

以上所述是小編給大家介紹的Nodejs全域性安裝和本地安裝的不同之處,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對指令碼之家網站的支援!

您可能感興趣的文章:

nodejs基礎知識NodeJS遍歷檔案生產檔案列表功能示例Linux下Nodejs安裝步驟(完整詳細)nodeJS刪除檔案方法示例nodejs連線mongodb資料庫實現增刪改查Nodejs 搭建簡單的Web伺服器詳解及例項nodejs微信公眾號支付開發Nodejs抓取html頁面內容(推薦)nodejs如何獲取時間戳與時間差NodeJS與HTML5相結合實現拖拽多個檔案上傳到伺服器的實現方法Nodejs如何搭建Web伺服器nodejs基礎應用