error: cannot spawn .husky/pre-commit: No such file or directory

文章讲述了在使用Husky进行代码格式化并在提交时遇到的问题,包括多余注释导致的错误和commitlint配置规范。作者提供了详细的解决方案,包括删除多余注释、配置pre-commit和commit-msg钩子,以及遵循commitlint的统一规范。
摘要由CSDN通过智能技术生成

遇到的问题

在使用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
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这些错误提示是关于Git钩子文件的问题。Git钩子是在特定的Git操作(如提交、推送等)前后执行的脚本。根据引用\[1\]和引用\[3\]的描述,解决这些错误的方法是删除项目文件夹下的`.git/hooks`目录中对应的文件,比如`pre-commit`、`pre-push`和`commit-msg`文件。这样,当你再次执行相关的Git操作时,就不会再出现这些错误了。 引用\[1\]: 删除项目文件夹下`.git/hooks/pre-commit`和`.git/hooks/pre-push`文件\[1\]。 引用\[3\]: 删除项目文件夹下`.git/hooks/commit-msg`文件\[3\]。 #### 引用[.reference_title] - *1* [【解决】cannot spawn .git/hooks/pre-commit: No such file or directory](https://blog.csdn.net/qq_25231683/article/details/131020562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [error: cannot run .git/hooks/pre-commit: No such file or directory解决方法](https://blog.csdn.net/chaihuasong/article/details/53087298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [cannot spawn .git/hooks/commit-msg: No such file or directory](https://blog.csdn.net/weixin_43842853/article/details/123096696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值