【源码共读】第39期 | 如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等

411 阅读2分钟

前言

学习目标

  • 发布npm包;
  • 学习git-cz如何使用及使用场景;
  • 学习release-it部分,生成changelog、打tag、自动管理版本号;
  • 注:这是一个git提交和自动化版本控制发包等相关的一些知识使用场景;

关于git-cz

  • 是什么?

    • 一个git commit统一规范的工具;
    • 用来规范提交commit的格式
  • 使用场景?

    • 在规范化提交git的项目中,经常会对每次提交的commit的前缀遗忘,只记得 fix、feat、styles这三个,要是想用其他的每次都要去网上搜索下git提交规范,这样太麻烦了;
    • 现在这个库的引入,解决了这种场景的问题;
  • 怎么使用?

    • 安装:npm install git-cz -D
    • 添加执行命令: package.json文件中添加 "scripts": { "commit": "git-cz" },
    • 使用:修改了文件后先git add . 然后执行npm run commit,接着选择对应的git 类型 ,提交commit说明即可 git-cz.png

关于release-it

  • 是什么? 自动化版本控制和包发布工具

  • 使用场景?

    • 生成变更日志、打tag、git提交、标记、推送(一个命令执行这些操作)、npm发布
    • 可以根据打的tag在ci/CD中执行相关配置的自动化;
    • 简化了多个操作之间命令的记忆;
  • 如何使用?

    • 安装 npm init release-it
    • 配置:在项目跟目录下添加.release-it.json的配置
    • 使用:npm run release
    • 注意:在使用这个命令之前,一定要把未commit、未暂存的代码都commit了 release.png
  • 版本相关?

    • package.json中的version字段表示发布包的版本,一般是三位如 0.0.1
    • 对应major,minor,patch 即大版本.小版本.小修复

关于@release-it/conventional-changelog

  • 是什么?

    • 是release-it插件的一个小补充,用来在项目文件中写入更新CHANGELOG.md文件
  • 使用场景?

    • 执行npm run release命令成功后,在项目根目录下生成一个CHANGELOG.md文件,并记录每次执行命令后变更的版本号和操作日期

image.png

  • 如何使用?
    • 安装:npm i @release-it/conventional-changelog -D
    • 配置:
    •    // 在.release-it.json文件中配置 
                 "plugins": {
                     "@release-it/conventional-changelog": {
                      "preset": "angular",
                      "infile": "CHANGELOG.md"
                     }
                    }
      
    • 运行:npm run release

发布npm包与release-it相结合

  1. 编写包功能
  2. 配置
// package.json中配置 
 "exports": "./src/index.js"
// .release-it.json中
"npm": {
 "publish": true
},
  1. 命令执行流程
    • npm login;
    • git add . ;
    • npm run commit ;
    • npm run release;
    • npm unpublish 包名 --force;(测试流程用,所以执行了删除)

总结

  1. 了解了这三个包的使用场景,并进行了使用;
  2. 结合npm发布流程及上述这三个库发布了一个自己的npm包;
  3. 对于release-it的基本原理,还太了解,好多地方看不懂,需要后期继续深入阅读;