记录:前端项目使用pnpm+husky(v9)+commitlint,提交代码格式化校验

安装husky

shell 复制代码
pnpm add -D husky

husky init(推荐)

shell 复制代码
pnpm exec husky init

init 命令简化了项目中的 husky 设置。它会在 .husky/ 中创建 pre-commit 脚本,并更新 package.json 中的 prepare 脚本。随后可根据你的工作流进行修改。

此时 package.json 的代码为

json 复制代码
"scripts": {
  "lint": "eslint --quiet --ext js,vue .",
  "prepare": "husky"
},

运行初始化命令(创建 .husky/ 文件夹)

shell 复制代码
pnpm prepare

添加 pre-commit 钩子

初始化命令会创建 .husky 文件夹,并且创建一个 pre-commit 文件,文件内容为

js 复制代码
pnpm lint

添加 commit-msg 钩子

手动创建一个 .husky 目录下的 commit-msg 文件,文件内容为

js 复制代码
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

pnpm exec commitlint --edit "$1"

添加 commitlint 配置

安装 @commitlint/cli @commitlint/config-conventional

shell 复制代码
pnpm add -D @commitlint/cli @commitlint/config-conventional

创建 commitlint.config.js 文件:

js 复制代码
module.exports = {
  extends: ['@commitlint/config-conventional']
};

交互式提交(推荐)

如果你希望提交时有提示引导输入信息,配合 commitizen 更好用: 安装 commitizen cz-conventional-changelog

shell 复制代码
pnpm add -D commitizen cz-conventional-changelog

修改 package.json

json 复制代码
"scripts": {
  "lint": "eslint --quiet --ext js,vue .",
  "prepare": "husky"
  "commit": "cz",
},
"config": {
  "commitizen": {
    "path": "cz-conventional-changelog"
  }
}

最终项目结构示意

lua 复制代码
.
├── .husky/
│   ├── commit-msg
│   └── pre-commit
├── commitlint.config.cjs
├── package.json
└── ...

这样在使用第三方工具提交代码时,就会自动校验提交内容。

相关推荐
A_nanda25 分钟前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker06261 小时前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
~无忧花开~1 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle1 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界2 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser2 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20353 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜3 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite
天天鸭4 小时前
前端仔写了个 AI Agent,才发现大模型只干了 10% 的活
前端·python·ai编程
发现一只大呆瓜4 小时前
前端模块化:CommonJS、AMD、ES Module三大规范全解析
前端·面试·vite