error: cannot spawn .husky/pre-commit: No such file or directory
遇到的问题
在使用husky为项目添加自动格式化后再提交的时候,出现了这样的问题。检查了一圈,文件也在,就是每次提交都出现这个问题,我还以为是husky的版本问题,原来是我在文件里面写了多余的注释
有些配置文件不能写多余的注释
解决办法:
将多余的注释给删了,需要在前面留一段注释
我是这样写的:
pre-commit:文件:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run format
commit-msg文件代码块
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run commitlint
前面留下这一段注释就行 pnpm 就不需要run了
大佬也是这么说的
地址:Cannot spawn .husky/pre-commit: No such file or directory
后续:我这样提交了之后又出现新的问题:
检查之后发现,忘记在package.json的script的标签加上一个命令行:
"format": "prettier --write \"./**/*.{html,vue,ts,js,json,md}\"",
注意:
每次修改在提交的时候需要重新git add一下,并且git commit -m “xxx:提交的内容”,其中xxx为你设置提交需要携带的文字要求我的是这样的
'feat',//新特性、新功能
'fix',//修改bug
'docs',//文档修改
'style',//代码格式修改, 注意不是 css 修改
'refactor',//代码重构
'perf',//优化相关,比如提升性能、体验
'test',//测试用例修改
'chore',//其他修改, 比如改变构建流程、或者增加依赖库、工具等
'revert',//回滚到上一个版本
'build',//编译相关的修改,例如发布版本、对项目构建或者依赖的改动
配置husky
要做到这件事情,就需要利用husky在代码提交之前触发git hook(git在客户端的钩子),然后执行`pnpm run format`来自动的格式化我们的代码。
1.安装`husky
npm install -D husky
2.执行
npx husky-init
会在根目录下生成个一个.husky目录,在这个目录下面会有一个pre-commit文件,这个文件里面的命令在我们执行commit的时候就会执行
3.在`.husky/pre-commit`文件添加如下命令:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run format
配置commitlint
对于我们的commit信息,也是有统一规范的,不能随便写,要让每个人都按照统一的标准来执行,我们可以利用commitlint来实现。
1.安装:
npm add @commitlint/config-conventional @commitlint/cli -D
2.添加配置文件,新建commitlint.config.cjs
(注意是cjs),然后添加下面的代码:
module.exports = {
extends: ['@commitlint/config-conventional'],
// 校验规则
rules: {
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'style',
'refactor',
'perf',
'test',
'chore',
'revert',
'build',
],
],
'type-case': [0],
'type-empty': [0],
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [0, 'always', 72],
},
}
3.在package.json
中配置scripts命令
# 在scrips中添加下面的代码{"scripts": { "commitlint": "commitlint --config commitlint.config.cjs -e -V" },}
4.配置结束,现在当我们填写commit
信息的时候,前面就需要带着下面的subject
'feat',//新特性、新功能
'fix',//修改bug
'docs',//文档修改
'style',//代码格式修改, 注意不是 css 修改
'refactor',//代码重构
'perf',//优化相关,比如提升性能、体验
'test',//测试用例修改
'chore',//其他修改, 比如改变构建流程、或者增加依赖库、工具等
'revert',//回滚到上一个版本
'build',//编译相关的修改,例如发布版本、对项目构建或者依赖的改动
5.配置husky
npx husky add .husky/commit-msg
在生成的commit-msg文件中添加下面的命令:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm commitlint