Node.js 套件管理器 NPM 使用
npm (Node Package Manager,Node 套件管理器) 能解決 Node.js 代碼部署上的很多問題,允許使用者:
- 從 npm 伺服器 (server) 下載別人編寫的第三方包到本地使用。
- 從 npm 伺服器 下載並安裝別人編寫的指令行程式到本地使用。
- 將自己編寫的包或指令行程式上傳到 npm 伺服器供別人使用。
安裝 npm
安裝 Node.js (參考 Node.js 安裝 for CentOS 7) 也會一併安裝 npm,可使用以下方式查看 npm 版本:
npm -v
3.10.10
如果安裝的 npm 是舊版本,可使用以下方式來升級 npm:
npm install npm -g
建立模組 (初始化專案)
自行建立一個專案的目錄,並進入該目錄:
mkdir demo-project
cd demo-project/
在專案的目錄建構 package.json 檔案,過程會詢問姓名、專案名稱等問題 (也可以加上選項別名 -y
或選項全名 --yes
,自動使用預設值,即可略過詢問立即產生 package.json 檔):
npm init
This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (demo-project) # 專案名稱 (預設為當前目錄名稱) version: (1.0.0) # 決定該專案的版本 description: # 專案描述 entry point: (index.js) # 程式的進入點 (執行該專案要執行的檔案) test command: # 專案測試指令 git repository: # 專案原始碼的版本控管位置 (如 git、GitHub) keywords: # 字串的陣列,方便別人搜尋到這個模組 author: # 作者 (就自己) license: (ISC) # 專案採用哪種授權方式 About to write to /root/demo-project/package.json: # package.json 產生的位置 # package.json 的資料內容 { "name": "demo-project", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes) # 直接 Enter 即可
確實已產生 package.json 檔了:
ls
package.json
安裝模組
使用 npm install
指令,來安裝模組 (module)。
npm install
即可依 package.json 裡的 dependencies
屬性,安裝所有依賴的模組全域安裝
全域 (global) 安裝說明:
- 會將模組放至 /usr/local/ 下,或是 Node.js 的安裝目錄下。
- 可以直接在指令行裡使用。
安裝 Node.js 常用框架 express
模組 (選項 -g
代表使用全域安裝):
npm install express -g
已安裝模組
列出所有安裝的模組與它們的相依模組 (可使用選項別名 -g
或選項全名 --global
):
ls
或 list
(要顯示更多的相依資訊可改用參數 la
或 ll
)npm ls -g
本地安裝
本地 (local) 安裝說明:
- 會將模組放至 ./node_modules/ 下 (執行 npm 指令所在目錄),如果沒有 node_modules 目錄,會在執行 npm 指令所在目錄自動產生。
- 可以使用
require()
來引入本地的模組。
安裝 Node.js 常用框架 express
模組:
-S
或選項全名 --save
,將安裝的模組添加到 package.json 的 dependencies
(預設沒使用選項的模式)。開發階段:可使用選項別名
-D
或選項全名 --save-dev
,將安裝的模組添加到 package.json 的 devDependencies
。npm install express
已安裝模組
列出所有安裝的模組與它們的相依模組:
ls
或 list
(要顯示更多的相依資訊可改用參數 la
或 ll
)npm ls
如果完全沒有安裝模組時:
npm ls
demo-project@1.0.0 /root/demo-project
└── (empty)
查看指定模組的版本資訊:
npm list express
demo-project@1.0.0 /root/demo-project
└── express@4.16.4
package.json 屬性說明
以本地安裝的 express
模組來說,它的 package.json 檔位於 node_modules/express/,而 package.json 內容的第一層有些屬些必須有大致的了解:
- contributors:貢獻者。
- dependencies:須依賴的其它模組 (npm 會將所有依賴模組自動安裝於 node_module/ 下)。
- description:描述。
- engines:運行在什麼引擎和版本 (例如 node >= v0.10.0)。
- version:模組的版本。
- files:模組有哪些檔案。
- homepage:官網。
- keywords:相關的關鍵字 (方便別人搜尋到這個模組)。
- license:授權方式 (例如 MIT)。
- name:模組名稱 (就是 express)。
- repository:模組原始碼的版本控管位置 (如 git、GitHub)。
- scripts:定義的腳本指令。
更新模組
更新所有全域模組:
npm update -g
更新指定的全域模組 express:
npm update express -g
更新所有本地模組:
npm update
更新指定的本地模組 express:
npm update express
移除模組
使用以下指令來移除模組:
npm uninstall express
搜尋模組
使用以下指令來搜尋相關模組:
npm search express
NPM 常用指令
查看指令用法
查看某個指令的詳細用法,例如 install
參數:
npm help install
匯入專案
匯入別人的專案,安裝所有相關模組:
npm install
npm scripts
可參考 npm scripts 使用指南。
參考
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.