nodejs本地模式和全域性模式
將包安裝到當前目錄的node_modules
子目錄下。
如果你熟悉 Ruby 的 gem 或者 Python 的 pip,你會發現 npm 與它們的
行為不同,gem 或 pip 總是以全域性模式安裝,使包可以供所有的程式使用,
而 npm 預設會把包安裝到當前目錄下。這反映了 npm 不同的設計哲學。如
果把包安裝到全域性,可以提高程式的重複利用程度,避免同樣的內容的多
份副本,但壞處是難以處理不同的版本依賴。如果把包安裝到當前目錄,
或者說本地,則不會有不同程式依賴不同版本的包的衝突問題,同時還減
輕了包作者的 API 相容性壓力,
但缺陷則是同一個包可能會被安裝許多次。
在使用 npm 安裝包的時候,
有兩種模式:
本地模式和全域性模式。
預設情況下我們使用 npm
即把包安裝到當前目錄的 node_modules 子目錄下。
Node.js
install命令就是採用本地模式,
的 require 在載入模組時會嘗試搜尋 node_modules 子目錄,因此使用 npm 本地模式安裝
的包可以直接被引用。
npm 還有另一種不同的安裝模式被成為全域性模式,使用方法為:
npm [install/i] -g [package_name]
與本地模式的不同之處就在於多了一個引數 -g。
我們在 介紹 supervisor那個小節中使用
了 npm install -g supervisor 命令,就是以全域性模式安裝 supervisor。
為什麼要使用全域性模式呢?多數時候並不是因為許多程式都有可能用到它,
為了減少多
重副本而使用全域性模式,而是因為本地模式不會註冊 PATH 環境變數。舉例說明,我們安裝
supervisor 是為了在命令列中執行它,譬如直接執行 supervisor script.js,這時就需要在 PATH
環境變數中註冊 supervisor。npm 本地模式僅僅是把包安裝到 node_modules 子目錄下,其中
的 bin 目錄沒有包含在 PATH 環境變數中,不能直接在命令列中呼叫。而當我們使用全域性模
式安裝時,
npm 會將包安裝到系統目錄,
譬如 /usr/local/lib/node_modules/,
同時 package.json 文
件中 bin 欄位包含的檔案會被連結到 /usr/local/bin/。/usr/local/bin/ 是在PATH 環境變數中預設
定義的,因此就可以直接在命令列中執行 supervisor script.js命令了。
使用全域性模式安裝的包並不能直接在 JavaScript 檔案中用 require 獲
得,因為 require 不會搜尋 /usr/local/lib/node_modules/。
總而言之,當我們要把某個包作為工程執行時的一部分時,通過本地模式獲取,如果要
在命令列下使用,則使用全域性模式安裝。
相關文章
- Oracle全域性索引和本地索引Oracle索引
- nodejs npm install全域性安裝和本地安裝的區別NodeJSNPM
- 全域性索引和本地索引的比較索引
- 管道模式執行全域性中介軟體模式
- nodejs建立全域性連結NodeJS
- 本地索引和全域性索引的適用場景索引
- 成品直播原始碼,Flutter 夜間模式 全域性字型原始碼Flutter模式
- nodejs第三天(全域性物件)NodeJS物件
- 修改NPM全域性模式的預設安裝路徑NPM模式
- 正規表示式全域性匹配模式(g修飾符)模式
- 八、hive3.1.2 安裝及其配置(本地模式和遠端模式)Hive模式
- node 全域性物件和全域性變數物件變數
- [轉]Oracle分割槽索引--本地索引和全域性索引比較Oracle索引
- Oracle分割槽索引--本地索引和全域性索引比較(轉)Oracle索引
- 短視訊程式開發,Flutter 夜間模式 全域性字型Flutter模式
- 分割槽索引之本地(local index)索引和全域性索引(global index)索引Index
- CRM本地部署和SaaS模式你站哪邊?模式
- vue定義全域性變數和全域性方法Vue變數
- 靜態全域性變數和全域性變數變數
- 本地索引、全域性索引、字首索引、非字首索引索引
- Nginx通過geo模式實現限速白名單和全域性負載均衡 - 運維筆記Nginx模式負載運維筆記
- nodejs在typescript專案中申明全域性變數NodeJSTypeScript變數
- phoenix全域性索引和本地索引 概述,使用場景,區別等詳解索引
- 淺談索引系列之本地索引與全域性索引索引
- 行為性模式模式
- [Hive]呼叫本地模式,避免使用MapReduceHive模式
- MongoDB – 使用模式構建之屬性模式MongoDB模式
- 全域性鎖和表鎖
- 分割槽表全域性索引與本地索引的選擇索引
- 分割槽表本地索引與全域性索引的區別索引
- 分割槽表 全域性索引與本地索引失效測試索引
- 第 11 章 全域性屬性和其他
- javascript模式 (3)——工廠模式和裝飾模式JavaScript模式
- 結構性代理模式模式
- MySQL 全域性鎖和表鎖MySql
- MySQL 全域性表和表鎖MySql
- 真實模式和保護模式模式
- Apache的prefork模式和worker模式Apache模式