如何發佈一個完整Node.js Module

 本文會透過以下幾個段落,讓各位一步一步學習如何寫一個自已的Node.js Module並且發佈到npm package上

Node.js Module 結構

我們先建立一個 NodeModuleDemo 的資料夾 ,接下來利用 npm init 進行初始化

(這裡不用特別設置,一路按 Enter 到底即可)

Tips. 這裡可以簡單的利用VSCode 熱鍵 Ctrl + ` 開啟命令視窗image

初始化完成的畫面如上

接下來我們會先建立好相關的資料夾用來分類我們的程式碼

其中 lib 資料夾是我們要寫的原始程式碼,test 資料夾則專門放我們的測試程式

最後 benchmark 資料夾裡面是用來做我們效能測試的程式

因我們這次會利用 ES6 的 Class 語法來寫我們的模組程式,所以這裡也需要加入 babel 的設定

再來為了讓我們的程式碼可以有統一的風格,我們也會加入 eslint 的設定

( babel 與 eslint 我通常會裝成全域的package ,各位可以自已選擇要安裝的目標)

先來安裝 babel 與 eslint 吧!

image

安裝完後,可以像上圖中,透過 –version 來確認安裝的狀況

這裡可以看到我們的 babel 版本為 6.26.0 而 eslint 則為 5.7.0

再來我們下一步先建立 babel 的設定檔,檔名為 .babelrc 放置在我們的根目錄下

內容直接設為

{

"presets": ["env"]

}

eslint 的部分則更簡單了,只需要在命令視窗輸入 eslint –init 選擇想要的範本即可,在我們的練習中,我們選擇

standard 。最後會自動在根目錄產出 .eslintrc.js 檔 ,相關的操作如下圖 (黃字標示處)

image

最後,因為我們希望 eslint 只檢查我們 lib 主程式目錄,所以這裡需要加入一個 .eslintignore 檔

將我們的 test 、benchmark 及輸出的 dist 資料夾做排除的動作,話不多說請看下圖

image

整個 Node.js Module 的目錄架構會像下圖這樣 ( formatter 、output 、index.js 可以先建立起來)

image

再來我們就開始動手寫我們的模組程式吧!

我們這次要做一個很簡單的文字轉換程式,輸出效果大致如下

image

首先我們先來寫做轉換的主程式,大致如下

export default class MyTextOutput {

constructor (formatter = null) {

  this.formatter = formatter

}

getResult (text) {

  if (!this.formatter) {

    throw new Error('Text Formatter is required')

  }

   let result = this.formatter.getFormatterText(text)

    return result

}

}

首先 MyTextOutput 類需要在建立時指定要用的 formatter , 最後再透過 getResult 取得轉換後的內容

而這裡我們就簡單的寫一個 SimpleFormatter 做到一個簡易的轉換效果

export default class SimpleFormatter {

getFormatterText (text) {

let trans = {

'a': 'Ä',

'b': 'ß',

'c': 'Ć'

}

let outPutTxt = ''

for (let index = 0; index < text.length; index++) {

      const ele = text[index]

    outPutTxt += trans[ele.toLowerCase()]

}

    return outPutTxt

}

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信