实现功能: typescript及eslint检查, 代码自动格式化,提交信息内容校验
实现步骤
-
安装4个依赖
pnpm i husky lint-staged @commitlint/cli @commitlint/config-conventional -D
-
执行初始化命令,会自动在项目根目录生成
.husky
文件夹pnpm husky
-
package.json
文件添加以下命令"scripts": { "prepare": "husky", "ts:check": "tsc --noEmit --skipLibCheck", "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.cjs" }
-
自行建立以下3个文件, 添加到
.husky
文件夹下// 文件名 pre-commit // 这里表示需要执行的操作 npm run ts:check npm run lint:lint-staged
// 文件名 lintstagedrc.cjs 这里自定义需要检查的文件类型 module.exports = { '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'], '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': ['prettier --parser json --write'], 'package.json': ['prettier --write'], '*.md': ['prettier --write'], };
// 文件名 commit-msg npx --no -- commitlint --edit $1
-
再新建一个文件放入项目根目录
// commitlint.config.cjs // 这里表示定义好的 提交信息文本格式 module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [ 2, 'always', [ 'feat', // 新功能(feature) 'fix', // 修补bug 'docs', // 文档(documentation) 'style', // 格式、样式(不影响代码运行的变动) 'refactor', // 重构(即不是新增功能,也不是修改BUG的代码) 'perf', // 优化相关,比如提升性能、体验 'test', // 添加测试 'ci', // 持续集成修改 'chore', // 构建过程或辅助工具的变动 'revert', // 回滚到上一个版本 'workflow', // 工作流改进 'mod', // 不确定分类的修改 'wip', // 开发中 'types', // 类型修改 'release' // 版本发布 ] ], 'subject-full-stop': [0, 'never'], 'subject-case': [0, 'never'] } }