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

commitlint+lint-staged+husky

步骤

1. 安装依赖

pnpm i -D husky lint-staged commitlint @commitlint/cli @commitlint/config-conventional

2. 初始化命令

npx husky init

3. 配置

// commit-msg,现npx husky add 添加指令已被废弃,手动添加
npx --no-install commitlint --edit $1

// pre-commit 若前续指令未自动生成,手动添加
npx --no-install -- lint-staged

i. 根目录会生成 .hushy 文件夹

ii. .husky/pre-commit: 这是 husky 的 pre-commit 钩子文件,表示在每次 git commit 时,都会执行 npx --no-install -- lint-staged,运行 lint-staged 校验提交的代码。

iii. .husky/commit-msg: 这是 husky的 commit-msg 钩子文件,本项目配置用于校验 提交的 message消息是否符合项目的 commitlint 规范

// a. package.json
"scripts": { 
    ...
    "prepare": "husky install" //(其他人安装后会自动执行) 
    ...
}
// b. 根目录会生成 .hushy 文件夹
echo "npx --no-install -- lint-staged" > .husky/pre-commit 

// c.package.json 配置指令
"scripts": { 
    ...
    "elint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts",
    "slint": "stylelint \"src/**/*.(vue|scss|css)\"",
    "format": "prettier --write src/",
    "lint": "npm run elint && npm run slint && npm run format"
    ...
},
"lint-staged": {
    "**/*.{js,jsx,tsx,ts,vue}": [
      "npm run elint",
      "git add ."
    ],
    "**/*.{html,vue,ts,cjs,json,md}": [
      "npm run format",
      "git add ."
    ],
    "**/*.{vue,css,scss,html}": [
      "npm run slint",
      "git add ."
    ]
}

4. 根目录新增commitlint.config.cjs。

本项目继承@commitlint/config-conventional的规则,具体的规范参考官方文档:commitlint。也可以自定义配置。

5. 可测试验证 

        a. 提交校验规范(需配合eslint prettier stylelint)

        b. 提交信息规范

eg.
git commit -m 'hhhh' 
// 终端出现如下报错:
 No staged files match any configured task.
⧗   input: hhhh
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

husky - commit-msg script failed (code 1)


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

相关文章:

  • Vulnhub-Tr0ll靶机笔记
  • 浅谈云计算14 | 云存储技术
  • 重拾Python学习,先从把python删除开始。。。
  • Power Automate 实现字符串分割、替换、换行显示
  • 《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • Golang Gin系列-2:搭建Gin 框架环境
  • 在线UI设计工具:创意与效率的结合
  • sheng的学习笔记-AI基础-激活函数
  • 大模型流水线并行和量化学习资料
  • 第12次CCF CSP认证真题解
  • iOS MPNowPlayingInfoCenter 通知栏、锁屏 显示当前播放的媒体信息
  • git修改用户名与查看git的账号与密码
  • WPF中设置DataGrid的常用样式
  • Mac环境鸿蒙模拟器安装
  • VueSSR详解 VueServerRenderer Nutx
  • Docker学习笔记【从入门到精通】
  • ubuntu 挂载 新 硬盘 ext3
  • 【重学 MySQL】七十九、深入探索用户变量
  • 警务辅助人员管理系统小程序ssm+论文源码调试讲解
  • solidity的struct对象,web3j java解析输出参数
  • 海思MPP音视频总结
  • uniapp离线打包app无法调用相机权限的解决思路
  • RHCE http作业
  • hdlbits系列verilog解答(DFF8-8位D触发器)-81
  • 大语言模型(LLM)入门级选手初学教程 II
  • Linux学习_11