LOGO

MIS 腳印

記錄 IT 學習的軌跡

Node.js 套件管理器 NPM 使用

透過 NPM 下載第三方套件和初始化專案來建立自己的模組,還有說明 package.json 屬性,以及較常用的一些指令。

npm

npm (Node Package Manager,Node 套件管理器) 能解決 Node.js 代碼部署上的很多問題,允許使用者:

  • 從 npm 伺服器 (server) 下載別人編寫的第三方包到本地使用。
  • 從 npm 伺服器 下載並安裝別人編寫的指令行程式到本地使用。
  • 將自己編寫的包或指令行程式上傳到 npm 伺服器供別人使用。

安裝 npm

安裝 Node.js (參考 Node.js 安裝 for CentOS 7) 也會一併安裝 npm,可使用以下方式查看 npm 版本:

[root@localhost ~]# npm -v
3.10.10

如果安裝的 npm 是舊版本,可使用以下方式來升級 npm:

[root@localhost ~]# npm install npm -g

建立模組 (初始化專案)

自行建立一個專案的目錄,並進入該目錄:

[root@localhost ~]# mkdir demo-project
[root@localhost ~]# cd demo-project/

在專案的目錄建構 package.json 檔案,過程會詢問姓名、專案名稱等問題 (也可以加上選項別名 -y 或選項全名 --yes,自動使用預設值,即可略過詢問立即產生 package.json 檔):

[root@localhost demo-project]# 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 檔了:

[root@localhost demo-project]# ls
package.json

安裝模組

使用 npm install 指令,來安裝模組 (module)

全域安裝

全域 (global) 安裝說明:

  • 會將模組放至 /usr/local/ 下,或是 Node.js 的安裝目錄下。
  • 可以直接在指令行裡使用。

安裝 Node.js 常用框架 express 模組 (選項 -g 代表使用全域安裝):

[root@localhost ~]# npm install express -g

已安裝模組

列出所有安裝的模組與它們的相依模組 (可使用選項別名 -g 或選項全名 --global):

[root@localhost demo-project]# npm ls -g

本地安裝

本地 (local) 安裝說明:

  • 會將模組放至 ./node_modules/ 下 (執行 npm 指令所在目錄),如果沒有  node_modules 目錄,會在執行 npm 指令所在目錄自動產生。
  • 可以使用 require() 來引入本地的模組。

安裝 Node.js 常用框架 express 模組

[root@localhost ~]# npm install express

已安裝模組

列出所有安裝的模組與它們的相依模組:

[root@localhost demo-project]# npm ls

如果完全沒有安裝模組時:

[root@localhost demo-project]# npm list
demo-project@1.0.0 /root/demo-project
└── (empty)

查看指定模組的版本資訊:

[root@localhost demo-project]# 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:定義的腳本指令。

更新模組

更新所有全域模組:

[root@localhost demo-project]# npm update -g

更新指定的全域模組 express:

[root@localhost demo-project]# npm update express -g

更新所有本地模組:

[root@localhost demo-project]# npm update

更新指定的本地模組 express:

[root@localhost demo-project]# npm update express

移除模組

使用以下指令來移除模組:

[root@localhost demo-project]# npm uninstall express

搜尋模組

使用以下指令來搜尋相關模組:

[root@localhost demo-project]# npm search express

NPM 常用指令

查看某個指令的詳細用法,例如 install 參數:

[root@localhost demo-project]# npm help install

匯入別人的專案,安裝所有相關模組:

[root@localhost demo-project]# npm install

npm scripts

 可參考 npm scripts 使用指南

參考


發表迴響