原文連結 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 專案徽章的新增和設定