zoukankan      html  css  js  c++  java
  • npm版本号的了解

    什么是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(命令行工具)切换到组件库项目目录

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

    3) npm publish

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

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

    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依赖包踩过的坑

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

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

    • ~会匹配最近的小版本依赖包,比如~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)

  • 相关阅读:
    电容
    51单片机
    三极管
    Scala 面向对象(八):特质(接口) 一
    Scala 面向对象(七):静态属性和静态方法
    Scala 面向对象(六):面向对象的特征二:继承 (一)
    Scala 面向对象(五):面向对象的特征一:封装性
    Scala 面向对象(四):import
    Scala 面向对象(三):package 包 (二)
    Scala 面向对象(二):package 包 (一) 入门
  • 原文地址:https://www.cnblogs.com/Tiboo/p/12637599.html
Copyright © 2011-2022 走看看