npm版本号的了解

摘要:
它也是Node.js平台的默认包管理工具。package.json中的version字段确定包的版本号是三位数的版本号,一些次要的修复是0.0.2。完整的npmpackage发布过程1)使用GitBash(命令行工具)切换到组件库项目目录2)在官方网站https上注册用户:

什么是npm?

npm 是 JavaScript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系

npm version的含义

  • 每个npm包都有一个package.json,如果要发布包的话,package.json里面的version字段就是决定发包的版本号
  • version字段结构是有三位的版本号, 如:0.0.1, 对应为major, minor, patch, 也就是说发布大版本的时候会升级为 1.0.0,小版本是0.1.0,一些小修复是0.0.2

一次完整的npm package发布流程

1) 使用Git Bash(命令行工具)切换到组件库项目目录

npm版本号的了解第1张

2) 官网注册用户 https://www.npmjs.com 进行注册, npm login账号登录

npm版本号的了解第2张

3) npm publish

npm版本号的了解第3张

此时就可在npm上看到刚刚发布的包了

npm版本号的了解第4张

注意事项(几种发布失败的情况)

1、包名重复错误

npm ERR! code E403 npm ERR! 403 Forbidden - PUT http://registry.npmjs.org/koa - You do not have permission to publish "koa". Are you logged in as the correct user? 

如上,发布一个名为koa的包报错,显然koa包已存在,切记发布前先去npm上搜一下包名看是否有重复,如果遇到上面提示,修改下包名,再去npm搜一下,确保没有这个包之后,再发布。

2、npm仓库镜像错误

npm ERR! code E403 npm ERR! 403 Forbidden - PUT https://registry.npm.taobao.org/pengxiaohua - [no_perms] Private mode enable, only admin can publish this module 

可以看到错误提示中https://registry.npm.taobao.org这个是淘宝的仓库镜像,而不是npm的仓库镜像,需要更换成npm仓库镜像。发布前可以先查看本地默认仓库镜像,如下:

$ npm config get registry > http://registry.npmjs.org/ 

如果npm config get registry后,返回的http://registry.npmjs.org/, 则说明的对的,如果返回如下:

$ npm config get registry > https://registry.npm.taobao.org/ 

这是淘宝镜像,说明之前可能是安装过cnpm,设置了本地的默认仓库镜像是淘宝的。需要修改本地仓库镜像,如下操作:

$ npm config set registry=http://registry.npmjs.org 

再次执行npm login,然后执行npm publish XXX发布包。

如果发布成功后,则再次将仓库地址设为淘宝镜像地址,方便本地cnpm的使用。

$ npm config set registry=https://registry.npm.taobao.org/ 

3 邮箱未验证

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT http://registry.npmjs.org/yangfudemo - you must verify your email before publish ing a new package: https://www.npmjs.com/email-edit
npm ERR! 403 In most cases, you or one of your dependencies are requesting

注册之后要去邮箱验证,找到邮箱中的邮箱验证邮件确认

补充关于package文件npm依赖包踩过的坑

在平常的项目中,仔细看会发现依赖包版本号前面会加上~,或者是^,或者是都不加(截图如下)

npm版本号的了解第5张

那么~和^的作用和区别是什么呢?

  • ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
  • ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0

平时该如何选择?

什么前缀都没有: 固然没问题,但是如果依赖包发布新版本修复了一些小bug,那么需要手动修改package.json文件。

^来标记版本号: 版本更新可能比较大,会造成项目代码错误(当初就是这个动画库popmotion: ^8.2.5,项目上线一年用的好好的,突然一天动画不动了,排除了好久才发现是高的版本语法规则改变了)

~来标记版本号: 这样可以保证项目不会出现大的问题,也能保证包中的小bug可以得到修复

资料参考:

1) 发布npm包踩坑 (https://segmentfault.com/a/1190000019189539)

2) npm创建包及注意事项 (http://www.ryxxff.com/30146.html)

免责声明:文章转载自《npm版本号的了解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Dubbo多注册中心配置WebSocket入门及使用指南下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]面向物联网的21个开源软件项目

  原文链接:https://my.oschina.net/RainyZou/blog/1605337 物联网市场呈现碎片化、无定形、不断变化的特点,其性质需要不仅仅像平常那样关注互操作性。开源在这方面表现不俗也就不足为奇了——客户犹豫不决,不敢将物联网的未来寄托在一种可能销声匿迹或变得难以定制、互联的专有平台上。 我在本文中介绍了主要的开源软件项目,专注...

winform程序实现自动升级

本文代码参考http://www.cnblogs.com/iyond/archive/2007/06/14/783301.html而来,只是在原有基础上做了整合,想深入理解请看原本,我只是从实现过程简单总结。 解决方案总共有3个项目:AppUpdateDemo是测试项目;AppUpdateC是自动升级的组件,这个项目编译将生成一个AppUpdateC.dl...

.NET Mocking Framework对比

  单元测试中,为了让单元测试程序完全脱离外部依赖,需要使用到Mock对象和Stub对象。虽然可以手工编写Mock对象和Stub对象,但通常我们都使用Mocking Framework来帮助我们简单快速的构建需要的Mock对象以及Stub对象。 一、概述   常见的Mocking Framework有如下几种:     1、Rhino Mocks V3...

基于kuboard管理k8s

前言 昨天我们分享了本地springboot项目构建docker镜像的内容,详细介绍了springboot项目打包、镜像构建、基于docker启动运行的全过程,这个技术虽然不是特别难,但是很实用,因为镜像构建完成后,我们不仅可以让我们的服务在docker中运行,也可以让它在k8s中运行,今天我们就来看下如何通过kuboard在k8s上部署我们的服务。 今天...

Windows 环境下 wampserver 与 phpStudy 的环境配置

一. wamperserver     1.下载好安装到本地指定目录,官网下载地址  http://www.wampserver.com   2.根据自己实际的安装路径,D:pcwampserverwamp64inapacheapache2.4.23confextra,找到 apache  的配置文件 httpd-vhosts.conf        3....

Linux如何解决动态库的版本控制

(换句话说,soname不是真实存在的文件,只是在此库中和将来调用此库的文件中保存的一个名字,在加载时去找这个名字,使用时创建一个软连接来指向真实文件,这样真实文件的版本号就可以升级了) Linux 系统,也同样面临和Window一样的问题,如何控制动态库的多个版本问题。Window之前没有处理好,为此专门有个名词来形容这个问题 “Dll hell”,其严...