釋出node模組到npm

weixin_33840661發表於2017-07-28

原文連結 http://blog.gezhiqiang.com/2017/07/26/npm-module
npm(Node Package Manager)是Node.js的包管理工具。npm社群有很多好用的模組。在開發過程中,我們也會在專案中提煉出一些有用的功能模組。這個時候可以釋出到npm並開源到github,方便別人使用同時又進一步根據issue完善和健壯模組的功能。
下面我就根據自己的一個模組koa2-validation來簡單介紹釋出 npm 模組的方法步驟以及一些注意點。

建立專案

通常我們的專案要放到github上開源,便於別的同學提issue。所以可以建立一個github專案(這裡預設大家清楚如何使用github,不明請google)。另外,預設本機已經安裝node和npm(不清楚請參考使用nvm安裝node)。

專案結構

github建立專案的時候,勾選預設的 .gitignore、License 和 README 檔案。本地通過npm init 來建立 package.json 檔案,需要資料一些模組的資訊,如名稱、版本、描述、作者、license等。

$ npm init

另外,需要一些 eslint 檔案等,具體的目錄結構如下:

.
├── .eslintrc.json   // eslint 檔案
├── .git
├── .gitignore      // .gitignore
├── .npmignore      // .npmignore 不需要publish的檔案
├── .travis.yml     // travis CI
├── LICENSE
├── README.md
├── index.js       // 入口檔案
├── lib            // 主要邏輯程式碼
├── node_modules
├── package-lock.json
├── package.json
└── test          //測試用例

主要的邏輯程式碼放在lib目錄下。不清楚的同學可以參考koa2-validation的目錄結構。

測試

專案通常需要加入必要的單元測試。而且因為可能別的同學會用到,這一點尤為重要。
關於node的測試,大家根據自己的習慣會使用mocha、jest等。我個人偏向於使用ava來進行單元測試。不清楚如何使用ava測試的,可以參考這篇。 關於更多測試結構,參考這裡
關於持續整合,在github上通常使用 travis 比較多。travis使用起來也很簡單方便。首先需要將你的github 賬號和travis關聯,travis就會同步你的github repository。然後,你需要開啟對應專案的CI 開關。最後在專案中定義對應的.travis.yml即可在專案push的時候自動執行測試指令碼。
更多關於travis的使用可以參考這篇官方文件.以下是我的.travis.yml 檔案。

#指定執行環境
language: node_js
#指定nodejs版本,可以指定多個
node_js:
  - "7.6.0"

before_script:
  - npm install

#執行的指令碼命令
script:
  - npm run test

#指定分支,只有指定的分支提交時才會執行指令碼
branches:
  only:
    - master

增加徽章

完成功能開發之後,最好在 README 中詳細地介紹模組的使用說明。
另外,我們經常看到 github 專案有很多漂亮的badge, 例如下載量和 測試狀況等。那如何新增這些徽章呢。可以參考 shields這篇文章

釋出專案

專案完成之後,我們需要將模組釋出到npmjs。通常我們需要先查詢一下是否自己的模組已經被註冊,並確定自己的模組名稱。
首先,我們需要到npm官網 註冊一個賬號。然後新增到本地配置。

$ npm adduser    
Username: dennis.ge
Password: ****
Email: gedennis@163.com

然後驗證自己的配置。

npm whoami

最後,在package.json 定義好版本,通過 npm publish 釋出模組即可。

npm publish

npm publish的時候經常會遇到釋出不成功的狀況。

npm WARN adduser Incorrect username or password
npm WARN adduser You can reset your account by visiting:
npm WARN adduser 
npm WARN adduser     http://admin.npmjs.org/reset

這個時候通常可能是nvm安裝的npm,或者你的 npm registry 不是npmjs,通過nrm修改npm源即可。

這裡只是介紹了一些簡單的釋出步驟,關於更多版本定義以及升級,請參考這篇

至此,我們就成功釋出了一個 npm 模組。

總結

這篇文章簡單介紹了一下如何釋出 npm 模組。包括如何建立專案,專案結構,測試,持續整合以及如何新增badge等一些內容。
關於釋出npm 模組,需要進一步瞭解版本的定義,以及版本的升級等更深入的內容。

參考

[1] 如何釋出Node模組到NPM社群
[2] 深入 Node 模組的安裝和釋出
[3] 如何簡單入門持續整合( Travis-CI )
[4] GitHub 專案徽章的新增和設定

相關文章