文章介绍:1.总结:什么是npm?2.如何发布自己的npm包3.发布报错集总结:什么是npm?Npm是一个著名的javascript包管理工具。是前端模块化下的标志性产品。简单来说就是通过npm下载模块,复用已有代码,提高工作效率和移动端开发。iOS用的cocoapods和Android用的maven效果一样。.如何发布自己的npm包1.创建一个npm账号在发布包之前,必须注册一个npm账号2.初始化一个简单的项目发布a.在本地创建文件夹:例如:z-toolb,执行命令进入目录:$cdz-toolc,执行npminit初始化项目。默认情况下,一直按Enter。sh-neverleave:z-toolneverleave$npminit该实用程序将引导您创建一个package.json文件。它仅涵盖最常见的项目,并尝试猜测合理的默认值。有关这些字段的权威文档,请参阅`npmhelpjson`以及它们的作用。之后使用`npminstall`安装包并将其作为依赖项保存在package.json文件中。随时按^C退出。包名称:(z-工具)版本:(1.0.0)描述:入口点:(index.js)测试命令:git存储库:关键字:作者:许可证:(ISC)即将写入/Users/neverleave/Desktop/z-tool/package.json:{"name":"z-tool","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"author":"","license":"ISC"}这样可以吗?(yes)默认字段介绍:name:发布包的名称,默认为父文件夹名称。不能和npm中的当前包名相同。包名不能有大写字母/空格/下划线!version:你的包的版本,默认是1.0.0。npm包的版本号有一系列的规则。模块版本号采用X.Y.Z格式,具体体现如下:1.修复bug,小改,增加z。2.添加新功能,向下兼容,添加y3.有较大改动,不向下兼容,添加xdescription:projectprofilemian:入口文件,默认为Index.js,可以修改成自己的文件scripts:包含执行命令测试的各种脚本:测试命令。author:写自己的账号名license:直接填这个,开源文件协议,或者MIT,看需要。d.在z-tool文件夹下新建一个名为index.js的文件,内容简单写入即可。!function(){console.log(`这是导入的包入口`)}()3.如果本机是第一次发布包(不是第一次可以忽略),输入npmadduser在终端提示输入账号密码和邮箱,然后会提示创建成功,如下图。【注意】npmadduser成功后,默认已经登录,可以跳过第四步。最后一行显示登录信息,然后是用户名。on后面是源地址,如果不是https://registry.npmjs.org/,比如淘宝源,请切换。可以参考:https://segmentfault.com/a/11...4.非首发包,在终端输入npmlogin,然后输入你创建的账号和密码,和邮箱,登录in.结果同步骤3。5.npmpublish成功发布包:sh-neverleave:z-toolneverleave$npmpublish+z-tool@1.0.1注意:如果项目中有一些私有代码,你不想在npm上发布,可以写到.gitignore或者.npmignore中,上传会被忽略。6.查询发布的包,去npm官网全局搜索。7、安装使用方法同其他包。具体使用请参考源码介绍或README.md。八、如何撤销已发布的包终端执行npmunpublish例如:1.npmunpublishz-tool@1.0.0删除某个版本2.npmunpublishz-tool--force删除整个npm市场的包但撤销推荐用法:npmunpublish的推荐替换命令:npmdeprecate[@]使用此命令不会撤销社区中现有的包,但会得到警告示例:npmdeprecatez-tool'我不再维护这个包了~'【注意】如果报权限错误,加--force发布错误集合1.需要增加版本号#1,发送包npmpublishFailedsh-neverleave:z-工具neverleave$npmpublishnpm错误!发布失败PUT400npmERR!代码E400npm错误!弃用必须是字符串:z-toolnpmERR!可以在以下位置找到此运行的完整日志:npmERR!/Users/neverleave/.npm/_logs/2018-11-23T10_52_01_742Z-debug.logsh-neverleave:z-toolneverleave$npmpublish#2,发送包npmpublish失败sh-neverleave:z-toolneverleave$npmpublishnpm错误!发布失败PUT403npmERR!代码E403npm错误!您不能发布之前发布的版本:1.0.3。:z-toolnpm错误!可以在以下位置找到此运行的完整日志:npmERR!/用户/永不离开/.npm/_logs/2018-11-23T11_24_57_662Z-debug.logsh-neverleave:z-toolneverleave$2.npmpublish发送包失败解决方法:终端执行:npmpublish--accesspublic参考:https://stackoverflow.com/que...#1。发送包npmpublish失败sh-neverleave:npmneverleave$npmpublishnpmERR!发布失败PUT400npmERR!代码E400npm错误!未限定范围的包不能是私有的:z-toolnpmERR!可以在以下位置找到此运行的完整日志:npmERR!/Users/neverleave/.npm/_logs/2018-11-23T08_44_21_310Z-debug.logsh-neverleave:npmneverleave$#解决方法:终端执行:npmpublish--accesspublicsh-neverleave:npmneverleave$npmpublish--accesspublic+z-tool@1.0.0sh-neverleave:npmneverleave$3.确保登录的用户帐户正确sh-neverleave:npmneverleave$npmpublishnpmERR!发布失败PUT404npmERR!代码E404npm错误!404找不到用户:z-toolnpmERR!404错误!404'z-tool'不在npm注册表中。错误!404Youshouldbugtheauthortopublishit(orusethenameyouryourself!)npmERR!404错误!404请注意,您也可以从anpm安装ERR!404tarball、文件夹、httpurl或giturl.npmERR!可以在以下位置找到此运行的完整日志:npmERR!/Users/neverleave/.npm/_logs/2018-11-23T07_32_28_518Z-debug.log4,登录时需要在用户名前加'~',可以验证sh-neverleave:npmneverleave$npmloginUsername:(~neverleave)neverleavePassword:()Email:(thisISpublic)(1063588359@qq.com)npmERR!代码EAUTHIPnpm错误!无法验证,需要:BasicnpmERR!可以在以下位置找到此运行的完整日志:npmERR!/Users/neverleave/.npm/_logs/2018-11-23T07_27_50_877Z-debug.logsh-neverleave:npmneverleave$5.擅自删除在线包(无时间限制,24小时)解决方法:添加--forcesh-neverleave:z-toolneverleave$npmunpublishz-toolnpm错误!拒绝删除整个project.npmERR!使用--force运行以执行此操作。npm错误!npmunpublish[<@scope>/][@]sh-neverleave:z-toolneverleave$#Solution(如果鄙视,?我当然希望你知道你在做什么。)sh-neverleave:z-toolneverleave$npm取消发布z-tool--forcenpmWARNusing--forceIsurehopeyouknowwhatyouaredoing.-z-toolsh-neverleave:z-toolneverleave$6.只有在npm市场上删除同名包后24小时后你才能重新发布sh-neverleave:z-toolneverleave$npmpublishnpm错误!发布失败PUT403npmERR!代码E403npm错误!24小时后才能重新发布z-tool。:z-toolnpm错误!可以在以下位置找到此运行的完整日志:npmERR!/Users/neverleave/.npm/_logs/2018-11-23T11_41_24_086Z-debug.logsh-neverleave:z-toolneverleave$结束关注微信公众号提升综合技能