当前位置: 首页 > 后端技术 > Node.js

什么是npm系列:3.如何发布自己的npm包

时间:2023-04-03 14:57:35 Node.js

看完本文,你将学会“开发”、“配置”、“发布”,最终拥有自己的npm包。1.初始化npm初始项目可以通过npminit命令创建,需要逐步完善的信息:包名:(npmtest)版本:(1.0.0)描述:入口点:(index.js)test命令:gitrepository:keywords:author:license:(ISC)创建package.json后,我们就可以轰轰烈烈的写代码了。2.开发Tips2.1调试开发过程中如何调试是一个痛点。很多人会把代码复制到node_modules中,然后调试结果。其实我们有更好的方法:“npmlink”,使用过程如下:在包的根目录下执行npmlink在项目中执行npmlinkpackage-name。这时候就可以在项目中实时访问package-name了。目前,这种方法不能用于纱线。3.Release3.1要创建/登录帐户,您首先需要在https://www.npmjs.com/signup注册一个帐户。完成后在终端执行npmlogin,输入账号密码后登录成功。这里要注意一点,如果设置了淘宝源,需要修改为npm源,使用如下命令恢复:npmconfigsetregistryhttp://registry.npmjs.org但是,在鉴于实际情况,我们在淘宝和npm源之间相互访问切换其实太麻烦了。更好的解决方案是在package.json中配置publishConfig字段。有关配置说明,请参阅下一段。3.2package.json配置本次主要介绍:publishConfigmainfilespublishConfig发布配置使用。"publishConfig":{"registry":"https://registry.npmjs.org/","tag":"beta","access":"public"}registry源地址标签发布对应的dist-tag标签访问如果是scoped包,则必须设置为public(付费帐户除外)。主包的入口执行文件,通常我们会指定为index.js。files我们需要控制npm包的大小,避免在安装过程中花费太多时间。一般我们只输出编译后的内容、文档、样式等。package.json中files字段的作用是控制项目包含的内容,可以设置为文件数组或文件名。此外,我们还可以在根目录或子目录下创建.npmignore文件,其写法与gitignore相同。有些文件不能被忽略:package.jsonREADMECHANGES/CHANGELOG/HISTORYLICENSE/LICENCENOTICE“main”字段中的文件以下文件默认被忽略:.gitCVS.svn.hg.lock-wscript.wafpickle-N.*.swp。DS_Store._*npm-debug.log.npmrcnode_modulesconfig.gypi*.origpackage-lock.json3.3版本管理版本号遵循语义版本规则,由MAJOR.MINOR.PATCH组成,扩展预发布也可以在末尾添加版本号信息。主要:当您进行不兼容的API修改时,次要:当您进行向后兼容的功能添加时,补丁:当您进行向后兼容的错误修复时。版本号可以手动修改,也可以通过npmversion命令管理://假设当前版本号为v1.0.0npmversionpatch//v1.0.1npmversionprepatch//v1.0.2-0npmversionminor//v1.1.0npmversionmajor//v2.0.0npmversion的完整命令如下:npmversion[|专业|未成年人|补丁|预科|初级|预补丁|预发布[--preid=]|from-git]如果我们要生成1.0.0-alpha.1风格的版本号,可以带上参数--preid:npmversionprerelease--preid=alpha当我们执行npmversion时,脚本会自动修改版本号,并在git中创建提交和标签。如果你想禁用这个行为,你可以通过--no-git-tag-version来阻止它。3.4tagnpm的tag是用来标记版本的,目的不同。一个npm包至少会有latest标签。我们可以根据测试版、预览版等不同需求自定义标签。比如我们有一个测试版本要发布,我们可以指定dist标签为beta:最新的。3.5发布当一切准备就绪后,我们就可以进入发布冲刺了。npm发布注意!可能有人会说为什么我只看到错误。一般可以这样检查:检查registry是否检查包名是否为@somescope/somepackagename形式,版本号是否未更新。如果包属于某个组织,即@somescope/somepackagename包名形式,执行命令需要调整为npmpublish--accesspublic。经过千辛万苦终于发布成功,但是如果发现少了一个文件,不值得再发布一个版本,我们可以使用npmunpublish命令取消24小时内发布的包,需要注意unpublish不推荐。4.Bestpracticesemantic-releaseautomaticallygeneratechangelogandversionmanagementcodespecification+commitspecificationmagic-lintcgrswitchnpm,yarnsourceCodenpmversionmajororminororpatchnpmpublish5.2移除标签npmdist-tagrm系列总结什么是npm系列:1.npm简介什么是npm系列:2.安装十八招什么是npm系列:3.如何发布自己的npm包待续