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)

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/Tiboo/p/12637599.html
Copyright © 2011-2022 走看看