npm在前端工程中有着不可或缺的作用。前端工程师每天通过npm安装项目依赖,通过npm发布自己的包,更新包,通过npmscripts运行开发环境,打包等,平时专注于实现业务,从来没有了解过发布流程一个包。我从繁忙的日程中抽出时间休息一下。今天就来体验一下写包发布的过程,记录下来分享给大家。一个包诞生的过程无非就是:write-test-release-iteration-test-release...,初始化项目mkdirmath-tool_demo新建文件夹npminit初始化package.json文件,输入项目信息根据提示:包名项目名版本版本说明描述入口点入口文件测试命令测试命令git仓库git仓库地址关键字关键字信息author作者协议等npminit-y:加-y标志,默认直接生成。将代码中包含的功能写在包中:我们实现了一个加减乘除小工具。创建一个新的index.js入口文件module.exports={add:add,minus:minus}functionadd(num1,num2){if(typeofnum1==='number'&&typeofnum2==='number'){返回数字1+数字2;}else{throw('参数必须是数字')}}functionminus(left,right){if(typeofleft==='number'&&typeofright==='number'){returnleft-right;}else{throw('argumentsmustbenumber')}}Test测试无非就是导入写好的模块,运行测试用例,这里就不多说了。发布npm登录登录。输入账号密码邮箱,如果没有账号,先申请:链接。npmpublish:写入的包发布失败:重复命名或类似:修改包名。再次发布:npmpublish:成功!默认版本为1.0.0。如何迭代发布包?错误是不可避免的。当然,作者也会考虑扩展功能。修复bug或功能迭代,代码修改需要同步到远程仓库。修改代码,比如做如下修改:module.exports={add:add,minus:minus}functionadd(){varleft=arguments[0];varright=参数[1];if(typeofleft==='number'&&typeofright==='number'){returnleft+right;}else{throw('参数必须是数字')}}functionminus(){varleft=arguments[0];varright=参数[1];if(typeofleft==='number'&&typeofright==='number'){returnleft-right;}else{throw('argumentsmustbenumber')}}修改版本号我们可以直接修改package.json中version字段的值。不过最好使用npm提供的命令来修改版本号(比如目前是v1.0.0):npmversionpatch-->1.0.1:是小修改,不改变功能使用npmversionminor-->1.1.0:可能会增加一些功能,不影响之前的使用。npmversionmajor-->2.0.0:可能是API改了,进行了大规模的修改。详细步骤:关于npm语义版本发布npmpublish如何使用发布的包在npm仓库中搜索包名然后,分别输入npminstallpackageName-S[-D]作为依赖或者开发依赖。以我们刚刚发布的包为例:第一次使用这个包npminstall-Smath-tool_demo安装新发布的包在index.js中导入使用:varmath=require('math-tool_demo')varaddRes=math.add(1,2);varminusRes=math.minus(1,2);console.log(addRes,minusRes,)//Output:3,-1isinuse,package可能已经迭代更新了npmoutdated检查项目package.jsonpackage中的各个定义远程仓库中是否有新版本?发现有新版本了。当前版本为1.0.0,最新版本为2.0.0。npmupdate[packageName]打完更新包,发现没有反应,没有更新包。查看package.json中的包依赖定义版本定义有3种:直接写准确的版本号:例如:1.0.0版本不变,有功能更新则使用新版本:^1.0.0比较保守,只能稍微改动bug修复等更新:~1.0.0^1.0.0表示>=1.0.0<1.2.0~1.0.0表示>=1.0.0<1.1.0所以更新到2.0.0是不允许的,只能在package.json中手动更改版本号,更新。为什么会这样?因为第一个数字意味着重大变化,贸然更新可能会带来难以预料的后果休闲娱乐并不冲突。现在新圈子【码农茶铺】用于程序员的生活、爱好、交友、求职、投诉等话题。希望您下班后可以来茶馆喝茶聊天。了解更多
