前言
我們經常使用npm來下載別人的模塊或者說包,那么我們如何將自己寫的模塊上傳到npm呢?
了解npm政策
在開始之前,最好回顧一下npm的政策,以防您對站點禮儀、命名、許可或其他指導原則有疑問。
發布包
1、創建用戶帳戶,要發布,您必須是npm注冊表上的用戶。如果您不是用戶去npmjs.org注冊一個npm的賬號,或者使用npm adduser創建一個帳戶。如果您在站點上創建了一個用戶帳戶,請使用npm登錄從您的終端訪問您的帳戶。
2、驗證郵箱
隨便發點東西給郵箱就OK
3、登錄
命令:npm login
4、查看當前用戶
命令:npm whoami
檢查您的用戶名是否已添加到注冊表https://npmjs.com/~username
5、新建一個文件夾並進入
6、初始化一些包的相關信息
命令:npm init
- package name(包名字)
- version(包版本)
- description(包描述)
- entry point(包里面主文件也就是入口地址)
- test command(包的測試命令是什么,可以先不指定)
- git repository(git地址,這樣就可以從npm官網直接點到git上,可以先不指定)
- keywords(關鍵字,別人搜東西時怎么搜到比較方便)
- author(作者)
- license: (ISC)(包遵循什么樣的開源協議)
之后會生成一個package.json文件
7、新建一個文件用來存放包(模塊)
8、發布包(模塊)
命令:npm publish
9、在官網npmjs.org搜索查看我們上傳的包(模塊)
更新包
10、如果我們更新了包(模塊)
- 首先修改package.json文件中的版本
- 然后執行命令npm publish發布新版本
- 在官網查看
刪除包
11、如果我們想要刪除包(模塊)
這里要說一點,取消發布包可能並不像你想象得那么容易,這種操作是受到諸多限制的,撤銷發布的包被認為是一種不好的行為(試想一下你撤銷了發布的包[假設它已經在社區內有了一定程度的影響],這對那些已經深度使用並依賴你發布的包的團隊是件多么崩潰的事情!)
-
首先如果就是想要刪除當前的這個版本,執行命令npm unpublish xxx(包名),去官網查看發現已經沒有這個包了,如果權限不夠加上 --force
- 使用命令npm unpublish xxx@1.1.1(包名@版本名)刪除指定版本
- 根據規范,只有在發包的24小時內才允許撤銷發布的包( unpublish is only allowed with versions published in the last 24 hours),需要我們發郵件給官方來刪除
- 即使你撤銷了發布的包,發包的時候也不能再和被撤銷的包的名稱和版本重復了(即不能名稱相同,版本相同,因為這兩者構成的唯一標識已經被“占用”了)
- 例如我在撤銷包后嘗試再發布同一名稱+同一版本的包

報錯,並建議我修改包的版本
npm unpublish的推薦替代命令:npm deprecate <pkg>[@<version>] <message>
使用這個命令,並不會在社區里撤銷你已有的包,但會在任何人嘗試安裝這個包的時候得到警告
例如:npm deprecate penghuwanapp '這個包我已經不再維護了喲~'
注意事項
- 【注意點1】不能和已有的包的名字重名!

然后發包的時候就會...

(翻譯:你沒有發布react包的權限,請問你是以react所有者的身份登陸的嗎?)
【提示】在發包前可以通過npm的搜索引擎查找是否已存在相同名稱的包
- 【注意點2】還有一點要注意的是npm對包名的限制:不能有大寫字母/空格/下滑線!
(其實在上面的例子中我原本打算寫成penghuwanAPP的,報錯。。。改成penghuwan_app,又報錯,最后不得不改成penghuwanapp。。。)
