NPM

tags: nodejs, NPM

NPM (Node Package Manager),是 Node.js 預設的 node 套件管理工具,在本機端安裝 Node.js 時也會一併安裝。

  • 套件:我們不需要重新開發就能使用別人已經開發好的程式碼
  • 套件管理工具:當使用到到的套件愈來愈多,並且版本與相容性的管理愈來愈複雜時,就需要一個類似目錄的東西,來讓我們統一管理套件(安裝、升級、刪除)

Install

初始化專案:

npm init

輸入相關資訊後會新增一個 package.json 檔案,來保存所有關於套件的相關配置檔資訊。安裝第一個套件後會再多出一個 package-lock.json 檔案來保存安裝紀錄。

依照各個不同的環境,套件有可能會被安裝在:

  • dependencies: 執行環境
  • devDependencies:開發或測試環境
  • optionalDependencies:不一定在每個環境都能安裝

Install npm package/node module

Install npm package/node module:
Example: Express

$npm install express --save

Import express from nodemodules:

const express = require('express');

node module 版本號

<package.json> 檔案中可以查看到套件的版本號。

node_module 版號通常會有三位數字 1.2.3 對應到 主版號.次版號.修訂號版號遞增規則如下

  • 主版號:當你做了不相容的 API 修改
  • 次版號:當你做了向下相容的功能性新增
  • 修訂號:當你做了向下相容的問題修正
  • 先行版號及版本編譯資訊: 加到「主版號.次版號.修訂號」的後面,作為延伸
{
    "dependencies":{
        "nodemon":"^1.12.0"
    }   
}
  • ^ - 安裝 1.x.x ,保留主要版本
  • ~ - 安裝 1.12.x,只安裝 bug 的修正
  • latest - 最新

npm install 安裝 node modules

因為套件的檔案很大,在上傳程式碼時通常不會將 node_modules 上傳( 會使用 .gitignore)。

如果要下載其他人的專案,或是不小心把 node_modules 檔案夾刪除,就需要透過 npm install 來安裝在 package.json 中提到的 packages。

npm install: save、save-dev、-g 差異

  • --save - 安裝 node module 並寫入 package.json 的 "dependencies"

    • 適合:node 應用程式上線後會用到的 npm
  • --save-dev - 安裝 node module 並寫入 package.json 的 "devDependencies"

    • 適合:只是在開發過程會用到的工具,不影響上線要用到的(例如:jshint, mocha)
    • package.json:
      ​​​​​​​​{
      ​​​​​​​​    "devDependencies":{
      ​​​​​​​​        "nodemon":"^1.12.0"
      ​​​​​​​​    }   
      ​​​​​​​​}
      
  • -g 全域安裝(package.json 中無資料,但仍然可以執行)

    • file path(mac): /usr/local/lib/node_modules

npm 常用指令

  • npm -v :觀看 NPM 版本
  • npm init :新增 package.json
  • npm install [模組名稱][安裝位置] :安裝 NPM 模組,安裝位置常用屬性如下:
  • -g 全域安裝
  • --save 安裝模組並寫入 package.json 的 "dependencies"
  • --save-dev 安裝模組並寫入 package.json 的 "devDependencies"
  • npm list :顯示安裝的 NPM 列表
  • npm uninstall [模組名稱] :刪除專案裡的 NPM

npm 常用 packages