前言
當你在完成一個個工程項目時,忽然發(fā)現(xiàn)需要某個需求實現(xiàn)工具,恰好此時你發(fā)現(xiàn)npm或者git上還沒有這樣的工具,或者沒有完全滿足你要求的工具。
是時候展現(xiàn)真正的技術(shù)了,你可以自己實現(xiàn)它,并且發(fā)布到npm上,作為一個輪子供其他人使用,這將是一件令程序員興奮的事。
在你發(fā)布的npm包右側(cè)可以看到每天的下載量。這在你的簡歷里也是一個亮點。
下面,我將手把手教你發(fā)布自己的NPM包!
1.注冊NPM 賬號
注冊地址:www.npmjs.com/
2.初始化自己要發(fā)布的項目
搭建本地環(huán)境:安裝node.js,包含了npm命令。 新建目錄,在該目錄下,初始化項目:npm init。 按照提示填寫初始化信息,我的模塊名稱為:node-cpdir,初始版本號:v1.0.0。 模塊名稱需遵循相關(guān)政策要求:www.npmjs.com/policies , 不能夠與已有NPM模塊名沖突等等。
{
"name": "node-cpdir",
"version": "1.0.0",
"description": "A tool to copy a directory to another.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": ["copydir", "copydir", "moveDir"],
"author": "Young",
"license": "ISC"
}
-
name
你的模塊名, 需要保證唯一,npm倉庫上的模塊名是不能重復(fù)的 -
main
描述了當你用require('modulename')
引用這個模塊的時候,引用的是哪個文件,這個字段的值你可以采用默認的或者修改成你項目中任何一個有效的文件 -
keywords
為別人搜索到你的包的關(guān)鍵字 -
author
就是你了,但是如果你的項目不是你一個人來發(fā)的,那么你也應(yīng)該將你的開發(fā)伙伴一起添加進去
3.登錄npm,發(fā)布自己的npm包。
npm login
根據(jù)提示輸入之前注冊的賬號、密碼。 發(fā)布npm包到公共平臺:
npm publish --access=public
此時在自己個人的npm賬號主頁可以看到該包。
4.使用自己發(fā)布的包(模塊)的示例代碼:
安裝之前發(fā)布的npm包:
npm install node-cpdir
5.更新自己的NPM包(模塊)及 readme文件
修改代碼和readme.md后,執(zhí)行命令:
npm version patch
npm publish
npm version后面參數(shù)說明:
patch:小變動,比如修復(fù)bug等,版本號變動 v1.0.0->v1.0.1
minor:增加新功能,不影響現(xiàn)有功能,版本號變動 v1.0.0->v1.1.0
major:破壞模塊對向后的兼容性,版本號變動 v1.0.0->v2.0.0
6.發(fā)包常見錯誤:
-
處于錯誤的npm源:
npm ERR! 403 Forbidden - PUT http://registry.npm.pt.mi.com/copydir - no_perms
此時需要使用nrm
切換到正確的官方npm源npm -------- https://registry.npmjs.org/
-
未登錄或切換源后未重新登錄:
npm ERR! 401 Unauthorized - PUT https://registry.npmjs.org/cpdir - You must be logged in to publish packages.
需要重新npm login
-
包名重復(fù):
npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/cpdir - You do not have permission to publish "cpdir". Are you logged in as the correct user?
需要重命名你的package.json
中的name
。即使你在npm官網(wǎng)沒有搜到你預(yù)設(shè)的包名,它可能也被發(fā)布占用過,需要重新考慮。