当前位置: 首页 > article >正文

husky,commit规范,生成CHANGELOG.md,npm发版

项目git提交工程化(钩子,提交信息commit message),npm修改版本,需要涉及到的包:

  • husky,允许在git钩子中执行不同的脚步,如commitlint,eslint,prettier,lint-staged各种工具
  • @commitlint/cli,@commitlint/config-conventional,commitizen,cz-conventional-changelog, 验证commit信息,以及采取的规范,以及帮助生产commit message的工具
  • changelog-cli,changelog-conventional,生成CHANGELOG.md文件,以及根据什么规范来生成CHANGELOG.md
  • standard-version,生成CHANGELOG.md,修改package.json的version,commit其新增的文件,最后的git push和npm publish需要自己手动敲。

先贴一份包的版本。

{
  "name": "commit-lint",
  "version": "1.3.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "prepare": "husky",
    "commit": "cz",
    "commitlint": "commitlint --edit",
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
    "release": "standard-version"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@commitlint/cli": "^19.6.0",
    "@commitlint/config-conventional": "^19.6.0",
    "@commitlint/prompt-cli": "^19.6.0",
    "commitizen": "^4.3.1",
    "conventional-changelog": "^6.0.0",
    "conventional-changelog-cli": "^5.0.0",
    "cz-conventional-changelog": "^3.3.0",
    "husky": "^9.1.7",
    "standard-version": "^9.5.0"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  }
}


安装husky

  • 安装
npm i husky -D

package.json 添加脚本 prepare:husky,该版本的只需要huskyhusky install命令已废弃

  • 执行
    在根目录生成 .husky 文件夹
npm run prepare
  • 添加 .husky/commit-msg
# npm run commitlint 这里会报错 node 找不到,只能通过这种来暂时解决
./node_modules/.bin/commitlint --edit

在这里插入图片描述

commitlint提交信息相关包安装

npm i @commitlint/cli @commitlint/config-conventional -D
  • 配置 commintlint.config.js 使用 @commitlint/config-conventional 校验信息
    在这里插入图片描述

  • 添加 commitlint 脚本 "commitlint": "commitlint --edit"
    这样就会在 git commit -m "xxx"的时候校验,可以通过 --no-verify 选项来跳过校验

  • 安装 commitizen 来帮助生成 commit 信息

npm i commitzen -D

初始化项目使用 cz-conventional-changelog 该commit规范,该命令会安装该包并且在 package.json 中新增 配置
或者可以自己手动添加

# npm
commitizen init cz-conventional-changelog --save-dev --save-exact

# yarn
commitizen init cz-conventional-changelog --yarn --dev --exact

# pnpm
commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact

在这里插入图片描述
此时,就可以通过 npx cz 或者配置好 sciript.comit:cz在来获取 commit 提示
在这里插入图片描述

安装 conventional-log conventional-changelog-cli

npm i conventional-log conventional-changelog-cli  -D

初次生成可以使用命令 conventional-changelog -p angular -i CHANGELOG.md -s -r 0
后续只往 CHANGELOG.md 文件append内容 conventional-changelog -p angular -i CHANGELOG.md -s
在这里插入图片描述

安装standard-version

安装包并添加脚本,可以通过npx standard-verion 【参数】 来或者 npm run release -- 【参数】来生成 CHANGELOG.md,提交新增和修改的文件,修改本项目的 version 以及 git tag 打标签

npm i standard-version

在这里插入图片描述
参数

npm run release -- --first-release
npm run release -- --prerelease alpha # 1.0.1-alpha.0
npm run release # 默认增加patch版本号
npm run release -- --release-as minor
npm run release -- --release-as 1.1.0
npm run release -- --no-verify # 不触发git钩子,如commit-msg钩子
npm run release -- --dry-run # 只显示命令,不执行
npm run release -- -t vv # 自定义 git tag 时的标签前缀,-t不加参数,默认是v前缀

在这里插入图片描述
如果使用了 standard-version,那么CHANGELOG.md就可以由他帮我们生成,底层也是用的conventional-changelog,最后 git push 和 npm publish要自己去执行, standard-version不做此操作。

npm version patch -m “提交的信息” ,npm自带的该命令就是来修改 version 同时如果项目有git仓库,也会提交信息。


http://www.kler.cn/a/420140.html

相关文章:

  • 【机器学习】CatBoost 模型实践:回归与分类的全流程解析
  • Algorithm:河内之塔
  • Profinet转EtherNet/IP网关是如何解决西门子S7-1500PLC与AB PLC的通讯问题的
  • Docker:在 ubuntu 系统上生成和加载 Docker 镜像
  • 时间表格Java
  • 前端的面试题
  • vscode 怎么下载 vsix 文件?
  • SQL面试题——抖音SQL面试题 共同问题—共同使用ip用户检测问题
  • 龙迅#LT6912适用于HDMI2.0转HDMI+LVDS/MIPI,分辨率高达4K60HZ,支持音频和HDCP2.2
  • ubuntu20以上配置登录失败处理
  • 在OpenHarmony系统下开发支持Android应用的双框架系统
  • 基于K-NN + GCN的轴承故障诊断模型
  • TIE相位恢复算法--两次对焦距离和位置、折射率不均匀、相位大小的分析
  • 【379】基于springboot的防疫物资管理信息系统
  • 【SQL】实战--查找重复的电子邮箱
  • Redis开发04:Redis的INFO信息解析
  • A058-基于Spring Boot的餐饮管理系统的设计与实现
  • 【森林生态系统揭秘】用R语言解锁森林结构、功能与稳定性分析!生物多样性与群落组成分析、路径分析、群落稳定性分析等
  • 【算法刷题指南】优先级队列
  • 力扣 二叉树的锯齿形层序遍历-103
  • Unity Ads的常见问题:投放、变现、安装等
  • 施耐德电气:多维解构AI挑战,引领产业创新变革
  • 【Vue】组件、组件生命周期、钩子函数
  • 计算帧率、每秒过多少次
  • 数据结构实训——查找
  • mvc命令