[ 筆記 ] JavaScript - npm 套件管理工具


Posted by krebikshaw on 2020-06-24

模組化與 Library

通常在大專案底下,都會需要有許多功能( 登入、金流、留言板 ),若是把所有功能寫在同樣的主程式底下,很可能修改其中一個公能會不小心動到其他的。所以依照不同功能把程式拆開來,就是模組化的概念。

引入 Module

以 Node.js 提供的一個 Module (OS)為例,可以用 require 來引入 OS

var test = require('os')
// 左邊的 test 是自己命名的,右邊的 os 是 Module 的名稱

console.log(test.platform())
// 接下來只要使用 test. 就可以使用 OS 的函式 這邊是以使用 platform() 為例

導出 Module

  • 導出函式不只可以提供程式給其他人使用,還可以把自己常用的函式導出成一個函式庫。於其他程式中引入使用。
  • 範例:
    • 下面寫了 3 個函式,可以用物件的方式,將要導出的函式通通寫在 module.exports 之中。
    • 或者用 export.<fun_name> 來將函式一個一個分別導出。
function add(a, b) {
    return a + b;
};

function subtract(a, b) {
    return a - b;
};

//  第一種導出的方法,可以一次把想導出的函式通通導出
module.exports = {
    add: add,
    subtract: subtrat,
    nagative: function (a) {
        return -a;
    },
};

//  第二種導出的方法,一次導出一個函式,如果有多個函式就一個一個寫出來。
exports.add = add;
exports.subtract = subtract;
exports.negative = function (a) {
    return -a;
};

引用剛剛導出的 Module

只要 require 剛剛儲存的檔案,就可以引入剛剛寫好的 module。

  • 若是檔案在同個資料夾底下,則在檔名前面加上 ./
  • 副檔名可以不要寫,系統會藉由檔名來找到對應的檔案
var test = require('./myModule')

console.log(test.add(6, 7))

npm ( Node Package Manager )

NPM 是 Node Package Manager 的簡稱,它是一個線上套件庫,可以下載各式各樣的 Javascript 套件來使用。

初始化

npm init:可以將資料夾初始化,系統會建立一個 package.json 檔,用來紀錄套件資訊跟專案資訊。

  • package.json 一開始會長得像下面這個樣子
    {
       "name": "week3",
       "version": "1.0.0",
       "description": "",
       "main": "index.js",
       "scripts": {
         "test": "echo \"Error: no test specified\" && exit 1"
       },
       "author": "",
       "license": "ISC",
       "dependencies": {
         // 記錄套件資訊
       }
     }
    
    • dependencies 裡面會儲存下載的 npm package

下載 Package

假設要引入 left-pad 這個套件。

  • 先連到 left-pad 的官方連結,上面可以看到使用說明及版本號…等等資訊。
  • 在 terminal 的專案目錄底下,輸入 npm install left-pad 來進行安裝。
    專案目錄底下會
  • 多一個 node_modules 資料夾,裡面會建立一個 left-pad 資料夾
  • package.json 中的 dependencies 會多出套件的資訊
    {
    "name": "week3",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC",
    "dependencies": {
      "left-pad": "^1.3.0" // 剛剛安裝的 left-pad
    }
    }
    
    #### package.json
    這個檔案有幾個好用的功能:
  1. 可以知道這份專案所依賴的套件有哪些
  2. 可以在其他電腦上利用 npm install 安裝好這份專案所需的全部套件

npm Script

可以用來寫一寫簡單的 terminal 指令,例如啟動程式之類的。

  • 範例:在 scripts 底下寫一個指令 start 用來開啟程式

    • 我們就可以在 terminal 輸入 npm run start 來執行這段指令
      {
      "name": "week3",
      "version": "1.0.0",
      "description": "",
      "main": "myModule.js",
      "scripts": {
      "start": "node index.js", // 新增的 start 指令
      "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
      "left-pad": "^1.3.0"
      }
      }
      
  • 可以在 scripts 寫入任何想要使用的指令

    • 輸入 npm run <script_key> 就可以執行

yarn ( 另一種套件管理工具 )

yarn 是由 Facebook 開發的另一種套件管理工具。

功能、指令跟 npm 都非常類似,但 yarn 的速度比較快,差別在安裝套件的指令是: yarn add <package-name>


#npm







Related Posts

不要問我從哪裡來 - noopener & noreferrer & nofollow

不要問我從哪裡來 - noopener & noreferrer & nofollow

自駕車 Software Stack 架構介紹

自駕車 Software Stack 架構介紹

Promise 筆記

Promise 筆記


Comments