项目开发工具【EditorConfig,Prettier,ESLint,Git Husky,Commitizen,Commitlint】

news2024/11/28 0:43:42

项目开发工具【六款】

前言

六款插件让你项目更加的规范✨✨✨

  • EditorConfig:为不同编辑器上处理同一项目的多个开发人员维护一致的编码风格
  • Prettier:一款强大的代码格式化工具,是当下前端最流行的代码格式化工具
  • ESLint:查找潜在的问题或不规范的编码风格,维护一致的代码风格和可读性
  • Git Husky:提交代码前执行脚本程序,检测语法是否符号规范
  • Commitizen:帮助你优雅的写出一个符号规范的git commit 命令
  • Commitlint:保证开发人员使用同一种git commit 命令规范

一.集成editorconfig配置

说明:

EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格,不会与其他一般性格式化工具,如 prettiereslinttslint 冲突,而是更像是它们之间的补充,本身并不会自动调整代码格式,而是根据指定的配置规则来检测其中有任何不一致的地方,并提供相应的建议/警告

使用步骤:

  1. VSCode需要安装一个插件:EditorConfig for VS Code
    在这里插入图片描述

  2. 创建并配置.editorconfig文件

# http://editorconfig.org

root = true

[*] # 表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
indent_style = space # 缩进风格(tab | space)
indent_size = 2 # 缩进大小
end_of_line = lf # 控制换行类型(lf | cr | crlf)
trim_trailing_whitespace = true # 去除行尾的任意空白字符
insert_final_newline = true # 始终在文件末尾插入一个新行

[*.md] # 表示仅 md 文件适用以下规则
max_line_length = off
trim_trailing_whitespace = false

二.使用prettier工具

说明:

Prettier 是一款强大的代码格式化工具,支持 JavaScriptTypeScriptCSSSCSSLessJSXAngularVueGraphQLJSONMarkdown 等语言,基本上前端能用到的文件格式它都可以搞定,是当下最流行的代码格式化工具

使用步骤:

1.VSCode需要安装prettier的插件
在这里插入图片描述

2.VSCod中的配置

设置 Prettier-Code formatter为默认的格式化文档

步骤:选择任意一个文件,鼠标右键,选择 使用....格式化文档,选择配置默认格式化程序...,选择Prettier-Code formatter

PS:到这里已经可以格式化文件来规范代码了,不过如何在项目中配置自己的代码规范呢,请接着往下走

3.在项目中安装prettier

npm install prettier -D

4.配置.prettierrc文件:

  • useTabs:使用tab缩进还是空格缩进,选择false
  • tabWidthtab是空格的情况下,是几个空格,选择2个;
  • printWidth:当行字符的长度,推荐80,也有人喜欢100或者120;
  • singleQuote:使用单引号还是双引号,选择true,使用单引号;
  • trailingComma:在多行输入的尾逗号是否添加,设置为 none,比如对象类型的最后一个属性后面是否加一个,;
  • semi:语句末尾是否要加分号,默认值true,选择false表示不加;
{
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 80,
  "singleQuote": true,
  "trailingComma": "none",
  "semi": false
}

5.创建.prettierignore忽略文件

/dist/*
.local
.output.js
/node_modules/**

**/*.svg
**/*.sh

/public/*

6.格式化文档是否生效

三.使用ESLint检测

描述:

是一个针对 javascript 代码的静态分析工具,其主要作用是帮助开发者发现和修复代码中的问题。它可以根据事先定义好的规则来检查代码中潜在的问题,并给出相应的建议或警告

使用步骤:

1.手动项目配置需要的ESLint环境(初始化项目时选择ESLint,则无需执行这一步)

//全局安装 ESLint
npm install -g eslint    
//初始化 ESLint
eslint --init 
//安装针对react项目的 ESLint 插件 
npm install eslint-plugin-react --save-dev       //针对react项目
//npm install eslint-plugin-vue --save-dev         针对vue项目

2.VSCode需要安装ESLint插件:

在这里插入图片描述

3.解决eslintprettier冲突的问题:

PS:两者都配置代码规范的,不一致就会导致出错

3.1安装插件:

npm install eslint-plugin-prettier 

3.2添加prettier插件:

  extends: [
    "plugin:vue/vue3-essential",
    "eslint:recommended",
    "@vue/typescript/recommended",
    "@vue/prettier",
    "@vue/prettier/@typescript-eslint",
     //在eslint中引入prettier规范
    'plugin:prettier/recommended'
  ],

3.3格式化文档测试是否成功

四.使用git Husky工具

描述:

保证代码仓库中的代码都是符号eslint规范的,在执行git commit命令的时候对其进行校验,如果不符合eslint规范,则自动通过修改

使用步骤:

  1. 使用自动配置命令:
npx husky-init '&&' npm install
  1. 打开.husky文件夹下的pre-commit文件,进行配置命令
    在这里插入图片描述

  2. 执行git commit的时候会自动对代码进行lint校验,相当于提交代码之前执行了lint脚本命令
    在这里插入图片描述

五.规范git commit命令

描述:

通常我们的git commit会按照统一的风格来提交,这样可以快速定位每次提交的内容,方便之后对版本进行控制。

但是如果每次手动来编写这些是比较麻烦的事情,我们可以使用一个工具:Commitizen帮助我们编写规范

使用步骤:

1.安装Commitizen

npm install commitizen -D

2.安装cz-conventional-changelog,并且初始化cz-conventional-changelog:

npx commitizen init cz-conventional-changelog --save-dev --save-exact

这个时候我们提交代码需要使用 npx cz替代git commit -m "",便会依次出现如下六个选项

  • 第一步是选择type,本次更新的类型
    在这里插入图片描述

  • 第二步选择本次修改的范围(作用域)
    在这里插入图片描述

  • 第三步选择提交的信息
    在这里插入图片描述

  • 第四步提交详细的描述信息
    在这里插入图片描述

  • 第五步是否是一次重大的更改
    在这里插入图片描述

  • 第六步是否影响某个open issue
    在这里插入图片描述

  • 执行效果
    在这里插入图片描述
    type表格
    在这里插入图片描述

六.限制 git commit提交

描述:

如果我们按照第五条使用npx cz来规范了提交风格,但是依然人通过 git commit 按照不规范的格式提交应该怎么办呢?

通过commitlint来限制提交 git commit

使用步骤:

  1. 安装依赖包
npm i @commitlint/config-conventional @commitlint/cli -D
  1. 在根目录创建commitlint.config.js文件,配置commitlint
module.exports = {
  extends: ['@commitlint/config-conventional']
}
  1. 使用husky生成commit-msg文件,验证提交信息:
npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"

这样,当别人使用 git commit 提交时就会报错,只能使用npx cz进行提交

结语

感谢读者阅读并关注博客文章,并对文章中提到的观点、建议或批评表示感谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像增强库albumentations(v1.3.0, 2023.5)中所有图像增强方法记录(class)

整体概要 变换类型具体类模糊/噪声AdvancedBlur*,Blur*,Downscale*,Defocus*,GlassBlur*,GaussianBlur*,GaussNoise*,ImageCompression*,ISONoise*,MultiplicativeNoise…

MySQL基础-SQL介绍

本文介绍MySQL中SQL通用语法,包括:DDL,DML,DQL,DCL 文章目录 SQL分类DDL(数据定义语言)数据库操作表操作 DML(数据操作语言)添加数据更新和删除数据 DQL基础查询条件查询…

Linux sed流编辑器

sed流编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。 sed 的工作流程主要包括读取…

智能的本质人工智能与机器人领域的64个大问题阅读笔记(二)

目录 如果一个人不能理解所说语言的全部信息,那么说这种语言也是没有意义的。 “20年内,机器将能够胜任人类承担的所有工作”(赫伯特西蒙, 1965)。 以及21世纪的人类愿意相信超智能机器时代的到来,与前几…

项目中大批量数据查询导致OOM

项目中有时候一次性将大批量数据都查出来到内存中导致内存占用过多很可能会导致内存溢出 问题复现 搭建一个本地项目。需求描述:查询表call_task中待拨打的数据进行拨打,call_task中一次可能会有大批量数据需要处理。本次准备了1万条数据。 /*** 查询…

【Java校招面试】基础知识(九)——Redis

目录 前言一、基础概念二、Redis持久化三、Redis分布式存储后记 前言 本篇主要介绍Redis数据库的相关内容。 “基础知识”是本专栏的第一个部分,本篇博文是第九篇博文,如有需要,可: 点击这里,返回本专栏的索引文章点…

(c语言实现)数据结构链表oj题(2)

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:分析力扣中有关链表的部分题目. 目录 前言一、链表中倒…

HTML第二天

第二天 表格 表格的主要作用 1.表格主要用于显示、展示数据,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理2.表格不是用来…

Java基础知识:1,DOS命令

1,盘名称 加 : 进入该盘目录下 例如:e: 进入e盘 2,dir 查看当前路径下文件和文件夹 3,md 文件夹名字 》 创建文件夹(md后要加空格) (md make directory) 4,c…

Oracle11g下载与安装

一、Oracle11g下载 官网下载地址:Oracle Database 11g Release 2 for Microsoft Windows (x64) 选择"Accept License Agreement",点击"win64_11gR2_database_1of2.zip"和"win64_11gR2_database_2of2.zip",进行…

Debian11之 K3s 部署K8S集群

K3S 架构方案 Server 节点指的是运行 k3s server 命令的主机,control plane 和数据存储组件由 K3s 管理Agent 节点指的是运行 k3s agent 命令的主机,不具有任何数据存储或 control plane 组件Server 和 Agent 都运行 kubelet、容器运行时和 CNI 基于 …

GPUAnimation的Mesh动画烘焙到贴图,学习笔记

0.动画烘焙贴图工具作者 Unity-GPU Animation - 知乎 1.安装学习项目 GitHub - striter/Unity3D-ToolChain_StriteR 复制到URP项目中,并删掉多余报错的和GPUAnimation无关的模块 2.把学习项目中的HLSL搬到低版本Unity的CG版本 安装FBX Exporter把烘焙好的mesh导…

【秒杀系统】高并发编程入门学习

文章目录 一、秒杀系统的基本构成二、秒杀系统的常见问题三、秒杀系统的解决技术 一、秒杀系统的基本构成 二、秒杀系统的常见问题 高并发 大量的请求进来,在Redis缓存层会发生缓存雪崩 缓存击穿 缓存穿透这些问题,这些问题就会打挂MySQL。这样就会导致…

23种设计模式之建造者模式(Builder Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的建造者模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

C++ STL 之 list 的模拟实现

文章目录 📍前言🌈STL之list的模拟实现🎈list_node节点的定义🎈iterator迭代器🕯️构造函数🕯️*it🕯️->🕯️it/it🕯️it--/--it🕯️! / 🎈l…

[MAUI程序设计]界面多态与实现

文章目录 需求一:在不同设备上使用不同 UI 外观定义控件 UI 外观基于平台自定义配置 需求二:在不同数据类别中使用不同的 UI 外观定义视图 UI 外观创建数据模板创建选择器定义数据 需求三:在不同数据状态中使用不同的 UI 外观使用绑定模型更改…

【腾讯云FinOps Crane 集训营】Crane 助力云原生用户充分发挥云上资源的最大价值,帮助企业降本增效之利器

文章目录 Crane 助力云原生用户充分发挥云上资源的最大价值,帮助企业降本增效之利器前言云上资源成本虚高的现状一、云原生的崛起:服务上云二、服务上云的魔咒:服务健壮了,钱袋子却空了三、钱都去哪了:云资源无序投入的…

golang 微服务的负载均衡

上次我们说了一下 微服务的容错处理,是用的 断路器 这一次我们来一起看看 微服务的负载均衡是如何做的 负载均衡 负载均衡是什么呢? 他能够将大量的请求,根据负载均衡算法,将不同的请求分发到多台服务器上进行处理&#xff0c…

Git Mac设置系统命令别名和Git命令别名

有时候git命令的别名过长要如何,在命令行不方便输入,这时候我们可以设置命令别名。 设置系统命令别名 设置系统命令别名可以在.bash_profile文件中配置,这个文件也是我们经常配置环境变量的地方,这个文件本身是不可见的&#xf…

rtp h264 发送和接收程序的问题

目的 为了自己写一个投屏协议,目前重新启用rtp协议,使用rtp协议直传效率最高,并且使用的是udp ffmpeg 发送rtp ffmpeg的rtp发送时一般把sps和pps放在一个包里面,写接收代码的时候要注意,在单包里面可以直接接收到两…