【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码

这篇具有很好参考价值的文章主要介绍了【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建项目我们不多说,可以选择默认的,也可以用你们现有的项目。注意章节1和章节2请一起看!
章节1: commit规范+ husky + lint-staged格式化代码
章节2: husky + 检测是否有未解决的冲突 + 预检查debugger + 自动检查是否符合commit规范

前言:
git commit 的时候总有人填写一堆花里胡哨乱写的内容,甚至看了commit 的描述都不知道他这次提交到底做了个啥,那我们有没有办法规范大家的commit提交呢?

commit规范

其实我们的commit是有一套提交规范的,大致内容如下:

类型名称 类型内容
feat 新内容
fix 修复bug
docs 文档
style 格式化代码
refactor 重构
test 增加测试
refactor 重构

实例

git commit -m'feat: 增加导航外部链接跳转功能'
git commit -m'fix: bug13756 修复外部链接跳转空白问题'

你在看看我这xxx同事没规范写的内容:

git commit -m'aaaaa'

写的6不6?
带着规范的看着就很直观,一看心里就有个大概!直接知道了是新功能还是修bug还是干啥的。所以是很有必要在多人开发中统一规范的,git commit 就可以做到此类功能,但我们放在后话,像这样的规范呢一定要在会议中强调并且约束成员共同遵守,养成良好的习惯,才能可持续发展!

接着我们来看看代码的风格格式化!

传统的手段是右键手动格式化,这样很累还有可能忘了,也有可能大家的格式化工具不统一导致偏差。那么能自动吗?
答案当然是:能!

自动格式化代码

首先我们要考虑一点,什么时候自动格式化?

  • 保存文件的时候自动格式化
  • commit预处理的时候自动格式化

保存文件:
《如果a同学用prettier,b同学用了eslint呢,是不是风格上又回不统一了,保存的时候还会把对方的格式变了,双方互相影响了?这不太好,人为因素太多,那方案commit的时候自动格式化呢?
commit预处理:
《首先看它的流程,这种方案是commit 的时候 根据脚本进行预处理
《格式化就根据已经定义好的格式内容和工具进行的格式化,也就是说我们走的是固定的脚本,是不是意味着格式被代码统一了,不再受人为因素影响了,那么也就做到了统一了,相当nice!
结果
commit预处理获胜!!!

那么怎么才能在commit预处理的时候自动格式化代码呢
答案是 husky + lint-staged 方案
1.安装husky

npm install husky -D

2.添加脚本
手动在package.json的script加上这么一段

"prepare": "husky install"

【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码
3.执行脚本

npm run prepare

【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码
执行完项目根目录也会出现一个.husky文件夹
【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码
4.安装lint-staged
这里我们安装10.0.7版本的,和我的node12.16.1版本匹配,后续如果格式化出错可自行选择升降版本。

npm install lint-staged@10.0.7 -D

5.配置package.json的相关命令 和 配置格式化配置
package.json添加以下内容

{
  "scripts": {
    "format-code": "bash .husky/format-code.sh"
  },
  "lint-staged": {
    "**/*.{js,jsx,ts,tsx,vue,json}": [
      "prettier --write"
    ]
  },
}

不难看出我们使用的prettier进行的格式化,所以我们可以用它的默认配置,在根目录建立.prettierrc.js并添加以下内容:

module.exports = {
  printWidth: 80, // 每行代码长度的最大值
  tabWidth: 2, // tab 键宽度
  useTabs: false, // 是否使用 tab 键代替空格缩进
  semi: true, // 是否在语句末尾加分号
  singleQuote: false, // 是否使用单引号代替双引号
  quoteProps: "as-needed", // 对象字面量中属性名是否加引号,可选值为 always, as-needed
  jsxSingleQuote: false, // 在 JSX 中是否使用单引号代替双引号
  trailingComma: "es5", // 数组、对象等结尾元素是否添加逗号,可选值为 none, es5, all
  bracketSpacing: true, // 在对象字面量声明所使用的的花括号后({)和前(})输出空格
  jsxBracketSameLine: false, // 在多行 JSX 元素的最后一行的末尾放置 > 而不是单独放在下一行
  arrowParens: "always", // 是否在箭头函数参数周围添加括号,可选值为 always, avoid
  rangeStart: 0, // 省略代码范围的起始行编号
  rangeEnd: Infinity, // 省略代码范围的结束行编号
  requirePragma: false, // 是否严格按照文件顶部的一些特殊注释格式化代码(有一定的类似于 ESLint 规则的效果)
  insertPragma: false, // 在文件顶部插入一个 @format 的特殊注释,用于提醒开发人员本文件已经格式化过了
  proseWrap: "preserve", // 格式化 markdown 文件时是否保留文本换行
};

6.在.husky文件下建立pre-commit 和 format-code.sh 并添加相应的内容

npx husky add .husky/pre-commit
npx husky add .husky/format-code.sh

在pre-commit下添加以下内容

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npm run format-code

在format-code.sh添加如下内容

#!/bin/bash

red=$(tput setaf 1)
green=$(tput setaf 2)
reset=$(tput sgr0)

echo "》》》${green}开始按统一配置格式化暂存区代码...${reset}"

if ! npx lint-staged; then
    echo "《《《${red}格式化出错,请根据错误内容修改后再次尝试!${reset}"
    exit 1;
fi

echo "《《《${green}恭喜你,格式完成!${reset}"
exit

7.提交代码测试效果
我们更改一个文件让它的格式不正确再去提交代码,就改App.vue吧,这样改
【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码
格式被打乱了,我再去提交【注意前面提到的commit规范哦】!
【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码
注意:我只显示一个更改是因为我的代码已经提交过了,你们在进行这个教程尝试后如果没提交过代码的话应该会显示很多个更改,注意了。
【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码
再看App.vue显然已经被格式化了!最后我们提交代码吧!

总结

  1. commit规范要熟知和养成习惯
  2. lint-staged的作用和配置
  3. husky的作用和怎么写一个简单的脚本

以上希望大家都能掌握,下一章节再见👋!文章来源地址https://www.toymoban.com/news/detail-472792.html

到了这里,关于【章节1】git commit规范 + husky + lint-staged实现commit的时候格式化代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git提交失败之running pre-commit hook: lint-staged

    在项目中提交代码时遇到了git报错,但是很疑惑不知道为什么报错。上网差了查才发现是项目中有语法校验,在提交中git默认不允许存在很多语法错误的文件提交。 错误提示: git:running pre-commit hook:lint-staged 错误分析: 错误的意思是大概是有一个钩子,提交前检查项目代码的

    2024年02月13日
    浏览(45)
  • 前端工程化配置-husky + eslint + lint-staged

    配置步骤如下: 1、下包 npm i eslint -D 或者 yarn add  eslint 2、配置 ESlint npx eslint --init 然后根据弹出的内容区选择你需要的规范。 1、 你想怎么使用ESLint? 2、 你的项目使用哪个规范? 3、你的项目使用哪个框架开发? 4、你的项目使用 TypeScript 了吗?   5、你的代码在哪里运行

    2023年04月09日
    浏览(38)
  • git commit 时 报错 ‘lint-staged‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

    合并分支的时候报错, \\\'lint-staged\\\' 不是内部或外部命令。导致分支无法合并,且会见被合并分支的提交内容stage到合并分支,提示需要在合并分支再执行一次commit命令。 因为我们的代码在提交,或者合并时,必须通过代码校验,才能正常提交或合并。这个报错就是因为没有全

    2024年02月03日
    浏览(45)
  • 代码约束(ESlint\prettier\husky\lint-staged\commitlint)

    JavaScript 是一个动态的弱类型语言,在开发中比较容易出错。因为没有编译程序,为了寻找 JavaScrip 代码错误通常需要在执行过程中不断调试。像 ESLint 可以让程序员在编码的过程中发现问题而不是在执行过程中,帮助我们提高开发效率。 提高代码整体的可读性、可维护性、可

    2024年04月08日
    浏览(77)
  • 基于Vue3+Vite+TS+ESLint+Prettier+Husky+lint-staged+commitlint+stylelint的项目构建

    博客后台管理系统使用后的是基于Vue3+Vite+TS+ESLint+Prettier的开发,具体项目构建如下 ESLint: 控制代码质量 Prettier: 控制代码风格 2.1、安装ESLint、Prettier相关相关包 eslint: ESLint的核心代码库 prettier: Prettier的格式化代码的核心代码库 eslint-config-airbnb-base: airbnb的代码规范(依赖pl

    2024年02月07日
    浏览(58)
  • git提交失败running pre-commit hook: lint-staged [33m[33m‼[33m Some of your tasks use `git add` command

    先上图吧 0 file committed, 1 file failed to commit: 代码更新 running pre-commit hook: lint-staged [33m[33m‼[33m Some of your tasks use git add command. Please remove it from the config since all modifications made by tasks will be automatically added to the git commit index. [39m [STARTED] Preparing… [SUCCESS] Preparing… [STARTED] Running tasks…

    2024年02月13日
    浏览(53)
  • Cannot find module lint-staged 解决办法

    使用git lint-stag后,再commit时报错 Cannot find module lint-staged 重新npm install和npm install lint-stag都不生效,最后把 node_modules删掉 ,再重新 npm install 就好用啦!

    2024年02月16日
    浏览(49)
  • 【已解决】使用 husky、commitlint 后 git commit 报错:No staged files match any configured task.

    git commit 报错:No staged files match any configured task. 这就涉及到 git hooks 了,熟悉的小伙伴自不用多说,不熟悉的可以看一下官方文档:Git - Git 钩子 如果报错中有 husky 、 commitlint 这样的眼,那就是前端项目中使用了这两种 npm 插件, husky 的配置文件在如下截图位置: 最粗

    2024年02月09日
    浏览(81)
  • 项目git commit时卡主不良代码:husky让Git检查代码规范化工作

    看完 《前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) 前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) - Yellow_ice - 博客园》,再次修改本文 团队人一多,提交一多,还是要对备注加以区分,好快速找到变更点。这时候就需要对每次提交,需要输入message,对提交

    2024年02月03日
    浏览(133)
  • 前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码

    最简单的两种方式: 使用 prettier + git pre-commit 使用 prettier + husky(原理和第一种一模一样哦) git hooks 下图为git hooks的官方示例,以.sample结尾。注意这些以.sample结尾的示例脚本是不会执行的,重命名后会生效 是一些自定义的脚本,用于控制git工作的流程,分为客户端钩子和服务

    2024年02月04日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包