我感覺(jué)發(fā)布過(guò)程中的坑讓我踩的差不多了...在這里記錄一下
基本流程
先簡(jiǎn)單記錄一下發(fā)布流程
初始化包
npm init
登錄npm
npm login
發(fā)布包
npm publish
問(wèn)題
接下來(lái)就是遇到的問(wèn)題了涉馅,每個(gè)問(wèn)題都包含報(bào)錯(cuò)信息鱼冀,請(qǐng)善用ctrl + f
搜索项栏,下文報(bào)錯(cuò)中涉及到自己包名的我都替換為了your-package
萧芙。
郵箱未驗(yàn)證
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! you must verify your email before publishing a new package: https://www.npmjs.com/email-edit : your-package
這個(gè)是注冊(cè)后沒(méi)有驗(yàn)證郵箱院刁,登錄自己郵箱找到對(duì)應(yīng)的郵件確認(rèn)就好了翔始。注意別選錯(cuò)了彪置,注冊(cè) npm 時(shí)會(huì)發(fā)給你兩個(gè)郵件斩箫,我當(dāng)時(shí)就是眼瞎沒(méi)有看到第二個(gè)吏砂。如果驗(yàn)證郵件過(guò)期的話(huà)登錄自己的 npm 主頁(yè)重新發(fā)一個(gè)就好了撵儿。
沒(méi)有權(quán)限發(fā)布
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You do not have permission to publish "your-package". Are you logged in as the correct user? : your-package
你的包和別人的包重名了,npm 里的包不允許重名狐血,所以去 npm 搜一下淀歇,改個(gè)沒(méi)人用的名字就可以了。
需要登錄
npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`
后面已經(jīng)注明了匈织,輸入npm adduser
重新登錄就可以了浪默,過(guò)程和npm login
一樣,這個(gè)問(wèn)題在你切換了 npm 源之后或登錄過(guò)期后都有可能發(fā)生报亩。
只有管理員才有權(quán)限發(fā)布
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! [no_perms] Private mode enable, only admin can publish this module [no_perms] Private mode enable, only admin can publish this module: your-package
這個(gè)是你的源設(shè)置成第三方源的時(shí)候才有可能發(fā)生浴鸿,比如設(shè)置了淘寶源就可能會(huì)導(dǎo)致該問(wèn)題。只要把源改回默認(rèn)的就可以了弦追,如下:
npm config set registry http://registry.npmjs.org
包名過(guò)于類(lèi)似
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! Package name too similar to existing packages; try renaming your package to '@hopgoldy/auto-git' and publishing with 'npm publish --access=public' instead : your-package
如果npm上已經(jīng)有了不少和你的包名類(lèi)似的包岳链,就會(huì)出現(xiàn)這個(gè)問(wèn)題,在package.json
中修改你的包名就可以了
無(wú)法發(fā)布到私有包
npm ERR! publish Failed PUT 402
npm ERR! code E402
npm ERR! You must sign up for private packages :
這個(gè)當(dāng)你的包名為@your-name/your-package
時(shí)才會(huì)出現(xiàn)劲件,原因是當(dāng)包名以@your-name
開(kāi)頭時(shí)掸哑,npm publish
會(huì)默認(rèn)發(fā)布為私有包,但是 npm 的私有包需要付費(fèi)零远,所以需要添加如下參數(shù)進(jìn)行發(fā)布:
npm publish --access public