npm官网申请账号

用于登录和发布组件

npm发包步骤

添加账号到你电脑

  1. npm adduser [--registry=url] [--scope=@orgname] [--always-auth] [--auth-type=legacy]
  2. npm adduser --registry=https://registry.npmjs.com/
  3. npm login

调试npm

如果不需要调试,可以跳过调试步骤,直接发布。

  • npm项目根目录运行终端命令:

    1. npm link
  • 运行后即将该npm包放进了本地npm缓存里,如果要在其他项目(例如项目名叫aaa)里引用调试,只需要在在aaa里运行命令:

    1. npm link 包名 // 这样就在aaa里建立了包名到npm包的链接关联,通过常规方式引入就可以测试npm包了
  • 如果要取消项目aaa与npm包的关联,在aaa项目下运行命令:

    1. npm unlink 包名 // 为了防止本地调试npm与发布后的npm混淆冲突,在调试完成后一定记得手动取消项目关联

    发布组件

    推荐npm version 因为很多人把npm源都切到了淘宝源,毕竟速度快,但是发布npm前需要先恢复到npm官方源上,否则发布失败

  1. npm publish --access=public

或者在项目中新建文件.npmrc配置registry = “https://registry.npmjs.org”

包版本管理规范

SemVer规范官网:https://semver.org/

标准版本
SemVer规范的标准版本号采用 X.Y.Z 的格式,其中 X、Y 和 Z 为非负的整数,且禁止在数字前方补零。X 是主版本号、Y 是次版本号、而 Z 为修订号。每个元素必须以数值来递增。

  • 主版本号(major):当你做了不兼容的API 修改
  • 次版本号(minor):当你做了向下兼容的功能性新增
  • 修订号(patch):当你做了向下兼容的问题修正。

例如:1.9.1 -> 1.10.0 -> 1.11.0
先行版本
当某个版本改动比较大、并非稳定而且可能无法满足预期的兼容性需求时,你可能要先发布一个先行版本。
先行版本号可以加到“主版本号.次版本号.修订号”的后面,先加上一个连接号再加上一连串以句点分隔的标识符和版本编译信息。

  • 内部版本(alpha):
  • 公测版本(beta):
  • 正式版本的候选版本rc: 即 Release candiate
    1. "scripts": {
    2. "pub:patch": "npm version patch", // 升级修订版本号,bug fix、文档等发布
    3. "pub:minor": "npm version minor", // 升级次版本号,增加新 feature 的发布
    4. "pub:major": "npm version major", // 升级主版本号,不兼容或代码架构发生了很大变化的发布
    5. "preversion": "git pull && npm run lint && npm test",
    6. "postversion": "npm publish && git push && git push --tags",
    7. },
    | npm verseion | Description | | —- | —- | | major | - 如果没有预发布号,则直接升级一位大号,其他位都置为0
    - 如果有预发布号:
    — 中号和小号都为0,则不升级大号,而将预发布号删掉。即2.0.0-1变成2.0.0,这就是预发布的作用
    — 如果中号和小号有任意一个不是0,那边会升级一位大号,其他位都置为0,清空预发布号。即 2.0.1-0变成3.0.0 | | minor | - 如果没有预发布号,则升级一位中号,大号不动,小号置为空
    - 如果有预发布号:
    — 如果小号为0,则不升级中号,将预发布号去掉
    — 如果小号不为0,同理没有预发布号 | | patch | - 如果没有预发布号:直接升级小号,去掉预发布号
    - 如果有预发布号:去掉预发布号,其他不动 | | premajor | - 直接升级大号,中号和小号置为0,增加预发布号为0 | | preminor | - 直接升级中号,小号置为0,增加预发布号为0 | | prepatch | - 直接升级小号,增加预发布号为0 | | prerelease | - 如果没有预发布号:增加小号,增加预发布号为0
    - 如果有预发布号,则升级预发布号 |

撤销发布

可以撤销具体某个包

  1. npm unpublish