1、創(chuàng)建package.json文件
參考npm文檔:如何創(chuàng)建 Node.js 模塊
特別注意?。?!模塊的名稱一定要在npm搜索不到的才可以,一定要起一個(gè)不重名的模塊名稱。
$ md xxx-plugin // 創(chuàng)建插件項(xiàng)目文件夾
$ cd xxx-plugin // 進(jìn)入新建項(xiàng)目目錄
$ npm init // 創(chuàng)建package.json文件
// 進(jìn)入配置操作
package name: (xxx-plugin) // 插件名
version: (1.0.0) // 插件版本
description: // 插件的作用描述
entry point: (index.js) // 插件入口
test command: // 測試腳本
git repository: // git地址(可以先不填)
keywords: // 關(guān)鍵詞
author: // 作者
license: (ISC) // 許可證
此處入口文件(entry point)默認(rèn)設(shè)置的index.js,在xxx-plugin文件夾下新建index.js文件如下:
exports.printMsg = function() {
console.log("This is a message from the demo package");
}
這個(gè)最簡單的模塊就完成了
2、需要一個(gè)npm賬號
打開npm官網(wǎng):https://www.npmjs.com/。按流程注冊賬號,注冊好了之后注冊郵箱會收到激活郵件,一定要激活,不然發(fā)布模塊時(shí)會報(bào)錯,提示激活郵箱。
3、npm里添加用戶
$ npm adduser // 添加賬戶
之后按需輸入上一步注冊的賬戶名、注冊郵箱、登陸密碼。
想檢查是否添加成功,如下:
$ npm whoami // 查詢當(dāng)前賬戶
如果添加賬戶時(shí)發(fā)現(xiàn)鏡像地址不對,是淘寶或者其他地址,怎么辦?
推薦安裝nrm查看npm的鏡像源
https://www.npmjs.com/package/nrm
$ npm install -g nrm // 安裝nrm鏡像源管理工具
$ nrm ls // 查詢npm鏡像源,*為當(dāng)前鏡像源
$ nrm use npm // 切換為npm原始鏡像
$ nrm -h // 幫助文檔
$ nrm -V // 版本
4、發(fā)布node模塊
以上都完成了,就可以在xxx-plugin目錄下發(fā)布模塊了。
再次提醒,模塊名稱必須是npm上唯一的,才能發(fā)布成功。
$ npm publish // 發(fā)布包到npm官方庫
發(fā)布成功后,在npm官網(wǎng)就能搜索到剛才自己發(fā)布的模塊了。
撤銷已發(fā)布的模塊,同名模塊發(fā)布需要24小時(shí)間隔。
5、測試新模塊
新建項(xiàng)目,安裝模塊
$ md new-project // 創(chuàng)建項(xiàng)目文件夾
$ cd new-project // 進(jìn)入項(xiàng)目目錄
$ npm install test-plugin // 安裝剛發(fā)布的插件
此時(shí)new-project -> node_modules文件夾下應(yīng)該就有自己的node模塊test-plugin了。
項(xiàng)目根目錄下新建test.js文件,引入新模塊:
const plugin = require('test-plugin');
plugin.printMsg()
運(yùn)行test.js:
$ node test.js
This is a message from the demo package
得到這條message就代表模塊運(yùn)行成功啦!~
6、本地開發(fā):調(diào)試和測試
在本地開發(fā)npm模塊的時(shí)候,我們可以使用npm link命令,將npm模塊鏈接到對應(yīng)的運(yùn)行項(xiàng)目中去,方便地對模塊進(jìn)行調(diào)試和測試。推薦閱讀以下文章:
npm link的使用
7、npm開發(fā)其它常用命令
$ npm login // 發(fā)布包時(shí)登錄npm賬號用的
$ npm publish // 發(fā)布包到npm官方庫
$ npm unpublish xxx // 撤銷已發(fā)布的xxx包
$ npm unpublish xxx --force // 強(qiáng)制撤銷xxx包
$ npm unpublish xxx@1.0.2 // 撤銷xxx包的1.0.2版本
$ npm link // 全局安裝當(dāng)前目錄的包
$ npm unlink // 全局卸載當(dāng)前目錄的包