前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码

这篇具有很好参考价值的文章主要介绍了前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何在提交代码之前,进行代码格式化检查,保证每个成员的代码都是同一个风格呢?

最简单的两种方式:

    1. 使用 prettier + git pre-commit
    1. 使用 prettier + husky(原理和第一种一模一样哦)

名词简介

git hooks

下图为git hooks的官方示例,以.sample结尾。注意这些以.sample结尾的示例脚本是不会执行的,重命名后会生效
前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

  • 是一些自定义的脚本,用于控制git工作的流程,分为客户端钩子和服务端钩子。

  • 客户端钩子包括:pre-commit、prepare-commit-msg、commit-msg、post-commit等,主要用于控制客户端git的提交工作流。服务端钩子:pre-receive、post-receive、update,主要在服务端接收提交对象时、推送到服务器之前调用。

  • git hooks位置位于每个git项目下的隐藏文件夹.git中的hooks文件夹里

  • 具体内容可以参考git的文档

Git pre-commit
  • 客户端hooks之一,在git add提交之后,然后执行git commit时执行,脚本执行没有问题的话就继续提交,反之就驳回提交操作
  • 它一般用来对将要提交的代码进行检查、优化代码格式、或者对提交的图片进行压缩等等任务
    举个栗子,下面是eslint检查的一个shell脚本,将下面代码保存为.git/hooks/pre-commit中,每次执行git commit时就会使用eslint进行代码检查
STAGE_FILES=$(git diff --cached --name-only --diff-filter=ACM -- '*.vue' '*.js')
if test ${#STAGE_FILES} -gt 0
then
    echo '开始eslint检查'

    which eslint &> /dev/null
    if [[ "$?" == 1 ]]; then
        echo '没安装eslint'
        exit 1
    fi

    PASS=true

    for FILE in $STAGE_FILES
    do
        eslint $FILE
        if [[ "$?" == 1 ]]; then
      PASS=false
    fi
  done

  if ! $PASS; then
      echo "eslint检查没通过!"
      exit 1
  else
      echo "eslint检查完毕"
  fi

else
    echo '没有js文件需要检查'
fi

exit 0
prettier
  • prettier是一个代码格式化工具,它可以支持JS/JSX/TS/Flow/JSON/CSS/LESS等文件格式。
  • 用来优化代码格式,比如缩进、空格、分号等等
husky

可以用于实现各种 Git Hook。这里主要用到 pre-commit这个 hook,在执行 commit 之前,运行一些自定义操作

快速上手第一种方案:使用 prettier + git pre-commit 检查并格式化本次修改的文件

本文示例代码

安装依赖到开发环境
//npm
npm install --save-dev --save-exact prettier
//yarn
yarn add --dev --exact prettier

根目录下创建.prettierrc.js
  • .prettierrc 文件用于配置规则,
module.exports = {
  printWidth: 100, // 单行长度
  tabWidth: 2, // 缩进长度
  useTabs: false, // 使用空格代替tab缩进
  semi: true, //句末使用分号
  singleQuote: true, //使用单引号
  quoteProps: 'as-needed', //仅在必需时为对象的key添加引号
  trailingComma: 'all', //多行时尽可能打印尾随逗号
  bracketSpacing: true, //在对象前后添加空格-eg: { foo: bar }
  jsxBracketSameLine: true, //多属性html标签的‘>’折行放置
  arrowParens: 'always', //单参数箭头函数参数周围使用圆括号-eg: (x) => x
  requirePragma: false, //无需顶部注释即可格式化
  insertPragma: false, //在已被preitter格式化的文件顶部加上标注
  proseWrap: 'preserve', //不知道怎么翻译
  htmlWhitespaceSensitivity: 'ignore', //对HTML全局空白不敏感
  endOfLine: 'lf', //结束行形式
  embeddedLanguageFormatting: 'auto', //对引用代码进行格式化
};
根目录下创建.prettierignore,忽略不想格式化的文件
  • .prettierignore 文件用于忽略默写不需要处理的文件或目录
  • node_modules默认被忽略,创建 .prettierignore忽略其他文件
build
.cache

# Ignore all HTML files:
*.html
*.yml
*.yaml

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

手动测试格式化效果

举个栗子:我们先故意把./index.js文件搞乱,然后测试格式化./index.js
前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

npx prettier --write ./index.js
//或
yarn prettier --write ./index.js

备注:格式化全部文件的命令

npx prettier --write .
//或
yarn prettier --write .
配置Git提交代码 Commit 前执行 Prettier (只格式化本次改动的文件)

创建 .git/hooks/pre-commit

STAGE_FILES=$(git diff --cached --name-only -- '*.json' '*.js')
if test ${#STAGE_FILES} -gt 0
then
    echo '开始代码格式检查与修正'
    for FILE in $STAGE_FILES
    do
        npx prettier --write $FILE
        if [[ "$?" == 1 ]]; then
      PASS=false
    fi
  done
echo "代码格式化检查完毕"

else
    echo '没有js或者json文件需要检查'
fi

exit 0

改动部分文件,进行测试

把代码改乱,然后执行下面命令

git add .
git commit -m "feat: test pre commit prettier"
代码已被修正,修正后,我们需要重新执行命令再次提交

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

按需处理文件

当我们提交非 js ,json文件时候,会提示:没有js或者json文件需要检查

XXX prettier-demo % git add .

git commit -m "feat: add readme"             
没有js或者json文件需要检查
[master 262be83] feat: add readme
 1 file changed, 21 insertions(+)
 create mode 100644 README.md

XXX prettier-demo % 
方案一大功告成

快速上手第二种方案:使用 prettier + husky 检查并格式化本次修改的文件

友情提示,此部分内容几乎和第一种一样,但是用了husky,没有使用git hook

安装依赖到开发环境
//npm
npm install --save-dev --save-exact prettier
//yarn
yarn add --dev --exact prettier

根目录下创建.prettierrc.js
  • .prettierrc 文件用于配置规则,
module.exports = {
  printWidth: 100, // 单行长度
  tabWidth: 2, // 缩进长度
  useTabs: false, // 使用空格代替tab缩进
  semi: true, //句末使用分号
  singleQuote: true, //使用单引号
  quoteProps: 'as-needed', //仅在必需时为对象的key添加引号
  trailingComma: 'all', //多行时尽可能打印尾随逗号
  bracketSpacing: true, //在对象前后添加空格-eg: { foo: bar }
  jsxBracketSameLine: true, //多属性html标签的‘>’折行放置
  arrowParens: 'always', //单参数箭头函数参数周围使用圆括号-eg: (x) => x
  requirePragma: false, //无需顶部注释即可格式化
  insertPragma: false, //在已被preitter格式化的文件顶部加上标注
  proseWrap: 'preserve', //不知道怎么翻译
  htmlWhitespaceSensitivity: 'ignore', //对HTML全局空白不敏感
  endOfLine: 'lf', //结束行形式
  embeddedLanguageFormatting: 'auto', //对引用代码进行格式化
};
根目录下创建.prettierignore,忽略不想格式化的文件
  • .prettierignore 文件用于忽略默写不需要处理的文件或目录
  • node_modules默认被忽略,创建 .prettierignore忽略其他文件
build
.cache

# Ignore all HTML files:
*.html
*.yml
*.yaml

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

手动测试格式化效果

举个栗子:我们先故意把./index.js文件搞乱,然后测试格式化./index.js
前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

npx prettier --write ./index.js
//或
yarn prettier --write ./index.js

备注:格式化全部文件的命令

npx prettier --write .
//或
yarn prettier --write .
安装husky
npm install husky --save-dev
让 husky 启用 git hooks
npx husky install

执行完之后文件根目录会多一个 .husky 文件夹:
前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

设置安装后自动启用 git hooks

注意:yarn 安装是不支持 prepare 这个生命周期的,需要将 prepare 改成 postinstall

npm set-script prepare "husky install"

可以看到 package.json 里增加一个 script

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

创建 pre commit hook
// 下面这行命令后面没有跟脚本,会产生undefined 的内容,但是我们可以自己修改具体的脚本命令
npx husky add .husky/pre-commit 

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

.husky/pre-commit 写入脚本

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

STAGE_FILES=$(git diff --cached --name-only -- '*.json' '*.js')
if test ${#STAGE_FILES} -gt 0
then
    echo '开始代码格式检查与修正'
    for FILE in $STAGE_FILES
    do
        if test -f "$FILE"; then
            echo "$FILE exist"
            npx prettier --write $FILE
        fi
        if [[ "$?" == 1 ]]; then
      PASS=false
    fi
  done
echo "代码格式化检查完毕"

else
    echo '没有js或者json文件需要检查'
fi

exit 0
测试,大功告成

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端

今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码,前端必备,git,前端文章来源地址https://www.toymoban.com/news/detail-758541.html

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

到了这里,关于前端项目规范化:手把手教你使用prettier和pre-commit(git hook或者husky)优化规范项目代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uniapp接口请求api封装,规范化调用

    封装规范和vue中的差不多,都是统一封装成一个request对象,然后在api.js里面调用。 先创建一个utils文件夹,然后里面创建一个request.js,代码如下: 在api文件夹中封装对应的index.js文件,然后导入request对象: 在对应的vue或者react中引入并调用:

    2024年02月08日
    浏览(31)
  • idea的git的规范化提交插件

    1.在idea中安装git的插件git commit Template插件 打开IDEA-选择菜单栏的File-Settings,选择Plugins-MarkPlace输入Git Commit Template进行搜索,点击apply, 2.在日常commit的 时候按照如下操作进行:在commit的页面,点击下图的图标后,根据实际情况选择或者输入相关内容,该插件会根据其填入的内

    2024年02月12日
    浏览(47)
  • 在 Visual Studio 中规范化文件编辑

    生成了对应的 .editorconfig 文件,存放在仓储的根目录。即对整个仓储所有的用 VS 作为 IDE 编辑的项目生效。 同时支持子目录有自己的 .editorconfig 文件,可以选择继承更高级别父目录的配置,也可以不继承。 该文件将应用到模板项目当中。除非特殊情况需根据项目定制编码规

    2024年02月17日
    浏览(30)
  • 【第一章 先导篇】1. 规范化的学习模型

    举例:什么是编码?

    2024年04月25日
    浏览(22)
  • 数据库期末复习(10)数据库规范化理论

     函数依赖(概念):FD 范式分解(评估准则): 模式分解(工具): 如何衡量一个数据库好不好:准确 高效 如果一个数据库设计的不好的话的,会带来哪些问题 删除异常 数据冗余 为什么会导致出现上方的问题:数据依赖 数据依赖的分类:完全依赖,部分依赖,传递依赖和相应的定义 A

    2024年02月08日
    浏览(39)
  • 【数据库原理 • 四】数据库设计和规范化理论

    前言 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前互联网+与大数据,一切都建立

    2023年04月12日
    浏览(27)
  • Git Commit 之道:规范化 Commit Message 写作指南

    commit message格式都包括三部分:Header,Body和Footer Header是必需的,Body和Footer则可以省略 Type(必需) type用于说明 git commit 的类别,允许使用下面几个标识。 feat :新功能(Feature) \\\"feat\\\"用于表示引入新功能或特性的变动。这种变动通常是在代码库中新增的功能,而不仅仅是修

    2024年02月03日
    浏览(38)
  • vsCode配置Eslint+Prettier结合使用详细配置步骤,规范化开发

            eslint它规范的是代码偏向语法层面上的风格 。本篇文章以一个基本的vue项目,来说明eslint+prettier+husky配置项目代码规范,为了更好的描述本文,我恢复了vscode的默认设置(即未安装eslint,prettier等插件,setting中也没有相关配置) 1、新建vue3.0脚手架项目 2、项目安装

    2023年04月17日
    浏览(31)
  • 手把手完成前端Vue3 + Vite项目工程化搭建

    基于 Vue3 + Vite 搭建的前端工程化项目演示模板 开发环境: Node.js v16.14.2 + npm v8.3.2 开发工具: Visual Studio Code or WebStorm 源代码管理: Git npm镜像: npm config set registry https://registry.npmmirror.com 技术栈 描述 Vue 渐进式 JavaScript 框架 Vite 新一代前端开发与构建工具 Element Plus 基于 Vue

    2024年04月11日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包