前端项目代码开发规范及工具配置
在项目开发中,良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。
项目规范及工具
- 集成 EditorConfig
- 集成 Prettier
- 1. 安装 Prettier
- 2. 创建 Prettier 配置文件
- 3. 配置 `.prettierrc`
- 4. 使用 Prettier
- 集成 ESLint
- 1. 安装 ESLint
- 2. 配置 ESLint
- 解决 Prettier 和 ESLint 的冲突
- 1. 安装插件
- 2. 在 `.eslintrc.js` 添加 `prettier` 插件
- 集成 husky 和 lint-staged
- 1. 配置 husky
- 2. 配置 lint-staged
集成 EditorConfig
EditorConfig 有助于为不同 IDE 编辑器上处理同一项目的多个开发人员维护一致的编码风格。
在项目根目录下增加 .editorconfig
文件, 并配置以下内容:
# Editor configuration, see http://editorconfig.org# 表示是最顶层的 EditorConfig 配置文件
root = true# 表示所有文件适用
[*]# 设置文件字符集为 utf-8
charset = utf-8# 缩进风格(tab | space)
indent_style = space# 缩进大小
indent_size = 4# 控制换行类型(lf | cr | crlf)
end_of_line = lf# 去除行首的任意空白字符
trim_trailing_whitespace = true# 始终在文件末尾插入一个新行
insert_final_newline = true# md 文件适用以下规则
[*.md]
max_line_length = off
trim_trailing_whitespace = false
⚠️ 注意:
VSCode 使用 EditorConfig 需要去插件市场下载插件EditorConfig for VS Code
。
WebStorm 则不需要安装,直接使用 EditorConfig 配置即可。
集成 Prettier
Prettier 是一款强大的代码格式化工具,支持 JavaScript、TypeScript、CSS、SCSS、Less、JSX、Angular、Vue、GraphQL、JSON、Markdown
等语言,基本上前端能用到的文件格式它都可以搞定,是当下最流行的代码格式化工具。
1. 安装 Prettier
npm i prettier -D
2. 创建 Prettier 配置文件
Prettier 支持多种格式的配置文件,比如 .json、.yml、.yaml、.js
等。
在本项目根目录下创建 .prettierrc
文件。
3. 配置 .prettierrc
在本项目中,我们进行如下简单配置,关于更多配置项信息,请前往官网查看 Prettier-Options 。
{"useTabs": false,"tabWidth": 4,"printWidth": 100,"singleQuote": true,"trailingComma": "none","bracketSpacing": true,"semi": false
}
4. 使用 Prettier
Prettier 安装且配置好之后,就能使用命令来格式化代码
-
格式化所有文件(. 表示所有文件)
npx prettier --write .
⚠️ 注意:
VSCode 编辑器使用 Prettier 配置需要下载插件Prettier - Code formatter
;
WebStorm 则不需要安装,直接使用 EditorConfig 配置即可。
集成 ESLint
ESLint 是一款用于查找并报告代码中问题的工具,并且支持部分问题自动修复。
其核心是通过对代码解析得到的 AST
(Abstract Syntax Tree 抽象语法树)进行模式匹配,来分析代码达到检查代码质量和风格问题的能力。
使用 ESLint
可以尽可能的避免团队成员之间编程能力和编码习惯不同所造成的代码质量问题,一边写代码一边查找问题,如果发现错误,就给出规则提示,并且自动修复,长期下去,可以促使团队成员往同一种编码风格靠拢。
1. 安装 ESLint
npm i -D eslint
2. 配置 ESLint
-
ESLint 安装成功后,执行
npx eslint --init
,然后按照终端操作提示完成一系列设置来创建配置文件。
-
How would you like to use ESLint? …(你想如何使用 ESLint?..)
我这里选择第三个,检查语法,发现问题,并强制代码样式
-
What type of modules does your project use? …(你的项目使用什么类型的模块?..)
项目支持 es6+语法,所以这里就直接选用第一项:JavaScript modules (import/export)
-
Which framework does your project use? … (你的项目使用哪种框架?..)
这里并未使用 vue 和 react,所以选择 none of these
-
Does your project use TypeScript?.. (你的项目使用 TypeScript 吗?..)
项目中并没有使用 Typescript,所以选择 No
-
Where does your code run?..(你的代码在哪里运行?..)
这是 node 项目,所以不需要选择浏览器环境
-
How would you like to define a style for your project? … (你想怎样为你的项目定义风格?…)
我们这里选择 Use a popular style guide(使用一种流行的风格指南)
-
Which style guide do you want to follow? … (你想遵循哪种风格指南?..)
-
What format do you want your config file to be in? … (您希望配置文件的格式是什么?..)
我这里选择 JavaScript
-
Would you like to install them now with npm?(你想现在用 npm 安装它们吗?)
默认 Yes,所以可以直接回车
-
所有配置如下:
-
安装成功后,项目的根目录就会多一个
.eslintrc.js
文件,其中的内容就是我们在终端中选择的相应配置。
⚠️ 注意:
VSCode 使用 ESLint 配置文件需要去插件市场下载插件ESLint
。
解决 Prettier 和 ESLint 的冲突
本项目中的 ESLint
配置中使用了 Airbnb JavaScript
风格指南校验,其规则之一是代码结束后面要加分号,而我们在 Prettier
配置文件中加了代码结束后面不加分号的配置项,这样就有冲突了,会出现用 Prettier
格式化后的代码,ESLint
检测到格式有问题的,从而抛出错误提示。
解决两者冲突问题,需要用到 eslint-plugin-prettier
和 eslint-config-prettier
。
eslint-plugin-prettier
将Prettier
的规则设置到ESLint
的规则中。
eslint-config-prettier
关闭ESLint
中与Prettier
中会发生冲突的规则。
最后形成优先级:Prettier 配置规则 > ESLint 配置规则。
1. 安装插件
npm i eslint-plugin-prettier eslint-config-prettier -D
2. 在 .eslintrc.js
添加 prettier
插件
module.exports = {...extends: ['airbnb-base','plugin:prettier/recommended' // 添加 prettier 插件],...
}
这样,我们在执行 eslint --fix
命令时,ESLint 就会按照 Prettier 的配置规则来格式化代码,轻松解决二者冲突问题。
集成 husky 和 lint-staged
我们在项目中已集成 ESLint
和 Prettier
,在编码时,这些工具可以对我们写的代码进行实时校验,在一定程度上能有效规范我们写的代码,但团队可能会有些人觉得这些条条框框的限制很麻烦,选择视“提示”而不见,依旧按自己的一套风格来写代码,或者干脆禁用掉这些工具,开发完成就直接把代码提交到了仓库,日积月累,ESLint
也就形同虚设。
所以,我们还需要做一些限制,让没通过 ESLint
检测和修复的代码禁止提交,从而保证仓库代码都是符合规范的。 为了解决这个问题,我们需要用到 Git Hook
,在本地执行 git commit
的时候,就对所提交的代码进行 ESLint
检测和修复(即执行 eslint --fix
),如果这些代码没通过 ESLint
规则校验,则禁止提交。 实现这一功能,我们借助 husky + lint-staged
。
husky —— Git Hook 工具,可以设置在 git 各个阶段(pre-commit、commit-msg、pre-push 等)触发我们的命令。
lint-staged —— 在 git 暂存的文件上运行 linters。
1. 配置 husky
🤔 Tips:
使用husky-init
命令快速在项目初始化一个husky
配置。在配置husky
之前必须初始化git
,否则可能会配置不成功
npx husky-init && npm install
命令执行会经历以下四步流程:
-
安装
husky
为开发依赖
-
创建
.husky
文件夹
-
在
.husky
目录创建pre-commit
hook,并初始化pre-commit
命令为npm test
-
修改
package.json
的scripts
,增加"prepare": "husky install"
2. 配置 lint-staged
lint-staged
这个工具一般结合 husky
来使用,它可以让 husky
的 hook
触发的命令只作用于 git add
那些文件(即 git 暂存区的文件),而不会影响到其他文件。
接下来,我们使用 lint-staged
继续优化项目。
-
安装
lint-staged
npm i lint-staged -D
-
在
package.json
里增加lint-staged
配置项"lint-staged": {"*.{vue,js,ts}": "eslint --fix" },
-
修改
.husky/pre-commit
hook 的触发命令为:
npx lint-staged
至此,husky
和 lint-staged
组合配置完成。
希望上面的内容对你的工作学习有所帮助!欢迎各位一键三连哦~
各位 加油!
✨ 原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下
👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!
相关文章:

前端项目代码开发规范及工具配置
在项目开发中,良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。 项目规范及工具 集成 EditorConfig集成 Prettier1. 安装 Prettier2. 创建 Prettier 配置文件3. 配置 .prettierrc4. 使用 Prettier 集成 …...

【JVM】JVM执行流程和内存区域划分
文章目录 是什么JVM 执行流程内存区域划分堆栈程序计数器元数据区经典笔试题 是什么 Java 虚拟机 JDK,Java 开发工具包JRE,Java 运行时环境JVM,Java 虚拟机 JVM 就是 Java 虚拟机,解释执行 Java 字节码 JVM 执行流程 编程语言…...

Python | 读取.dat 文件
写在前面 使用matlab可以输出为 .dat 或者 .mat 形式的文件,之前介绍过读取 .mat 后缀文件,今天正好把 .dat 的读取也记录一下。 读取方法 这里可以使用pandas库将其作为一个dataframe的形式读取进python,数据内容格式如下,根据…...

信息技术的变革与未来发展的思考
信息技术的变革与未来发展的思考 在21世纪,信息技术(IT)正在以前所未有的速度推动社会、经济、文化的深刻变革。无论是人工智能、大数据,还是云计算、物联网,信息技术的发展已经渗透到了各个行业,彻底改变…...

融会贯通记单词,绝对丝滑,一天轻松记几百
如果我将flower(花)、flat(公寓)、floor(地板)、plane(飞机)几个单词放在一起,你会怎么来记忆这样的一些单词呢? 我们会发现,我们首先可以将plane去掉,因为它看上去几乎就是一个异类。这样,我们首先就可以将…...

【计算机视觉】YoloV8-训练与测试教程
✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 制作数据集 Labelme 数据集 数据集选用自己标注的,可参考以下:…...

响应式布局-媒体查询父级布局容器
1.响应式布局容器 父局作为布局容器,配合自己元素实现变化效果,原理:在不通过屏幕下面吗,通过媒体查询来改变子元素的排列方式和大小,从而实现不同尺寸屏幕下看到不同的效果。 2.响应尺寸布局容器常见宽度划分 手机-…...

Android APN type 配置和问题
问题/疑问 如果APN配置了非法类型(代码没有定义的),则APN匹配加载的时候最终结果会是空类型。 那么到底是xml解析到数据库就是空type呢?还是Java代码匹配的时候映射是空的呢? Debug Log 尝试将原本的APN type加入ota或者新建一条ota type APN,检查log情况。 //Type有…...

前端mock了所有……
目录 一、背景描述 二、开发流程 1.引入Mock 2.创建文件 3.需求描述 4.Mock实现 三、总结 一、背景描述 前提: 事情是这样的,老板想要我们写一个demo拿去路演/拉项目,有一些数据,希望前端接一下,写几个表格&a…...

fiddler抓包10_列表显示请求方法
① 请求列表表头,鼠标悬停点击右键弹出选项菜单。 ② 点击“Customize columns”(定制列)。 ③ 弹窗中,“Collection”下拉列表选择“Miscellaneous”(更多字段)。 ④ “Field Name”选择“RequestMethod”…...

Win10系统复制、粘贴、新建、删除文件或文件夹后需要手动刷新的解决办法
有些win10系统可能会出现新建、粘贴、删除文件或文件夹后保持原来的状态不变,需要手动刷新,我这边新装的几个系统都有这个问题,已经困扰很久了,我从微软论坛和CSDN社区找了了很多方法都没解决,微软工程师给的建议包括重…...

BERT训练环节(代码实现)
1.代码实现 #导包 import torch from torch import nn import dltools #加载数据需要用到的声明变量 batch_size, max_len 1, 64 #获取训练数据迭代器、词汇表 train_iter, vocab dltools.load_data_wiki(batch_size, max_len) #其余都是二维数组 #tokens, segments, vali…...

必须执行该语句才能获得结果
UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。 ; uncategorized SQLException; SQL state [null]; error code [0]; 必须执行该语句…...

AI论文写作可靠吗?分享5款论文写作助手ai免费网站
AI论文写作的可靠性是一个备受关注的话题。在当前的技术背景下,AI写作工具能够显著提高论文写作的效率和质量,但其可靠性和安全性仍需谨慎评估。 AI论文写作的可靠性 技术能力与限制 AI论文写作的质量很大程度上取决于用户提供的输入指令或素材的质量…...

AJAX 入门 day3 XMLHttpRequest、Promise对象、自己封装简单版的axios
目录 1.XMLHttpRequest 1.1 XMLHttpRequest认识 1.2 用ajax发送请求 1.3 案例 1.4 XMLHttpRequest - 查询参数 1.5 XMLHttpRequest - 数据提交 2.Promise 2.1 Promise认识 2.2 Promise - 三种状态 2.3 案例 3.封装简易版 axios 3.1 封装_简易axios_获取省份列表 3…...

oracle avg、count、max、min、sum、having、any、all、nvl的用法
组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看,nvl(列名,默认值),nvl的作用就是如果列名所在的这一行出现空则用默认值替换...

Python一分钟:装饰器
一、装饰器基础 函数即对象 在python中函数可以作为参数传递,和任何其它对象一样如:str、int、float、list等等 def say_hello(name):return f"Hello {name}"def be_awesome(name):return f"Yo {name}, together were the awesomest!"def gr…...

Docker部署ddns-go教程(包含完整的配置过程)
本章教程教程,主要介绍如何用Docker部署ddns-go。 一、拉取容器 docker pull jeessy/ddns-go:v6.7.0二、运行容器 docker run -d \--name ddns-go \--restart unless-stopped \...

简单多状态dp第三弹 leetcode -买卖股票的最佳时机问题
309. 买卖股票的最佳时机含冷冻期 买卖股票的最佳时机含冷冻期 分析: 使用动态规划解决 状态表示: 由于有「买入」「可交易」「冷冻期」三个状态,因此我们可以选择用三个数组,其中: ▪ dp[i][0] 表示:第 i 天结束后,…...

游戏化在电子课程中的作用:提高参与度和学习成果
游戏化,即游戏设计元素在非游戏环境中的应用,已成为电子学习领域的强大工具。通过将积分、徽章、排行榜和挑战等游戏机制整合到教育内容中,电子课程可以变得更具吸引力、激励性和有效性。以下是游戏化如何在转变电子学习中发挥重要作用&#…...

php+mysql安装
1.卸载mysql 没启动不停止 2.下载 3.解压 4.点击安装 5.出现成功 端口占用修改 修改端口89或者87 可视化扩展 修改后重启 开启扩展...

音视频入门基础:FLV专题(5)——FFmpeg源码中,判断某文件是否为FLV文件的实现
一、引言 通过FFmpeg命令: ./ffmpeg -i XXX.flv 可以判断出某个文件是否为FLV文件: 所以FFmpeg是怎样判断出某个文件是否为FLV文件呢?它内部其实是通过flv_probe函数来判断的。从《FFmpeg源码:av_probe_input_format3函数和AVI…...

Tomcat 乱码问题彻底解决
1. 终端乱码问题 找到 tomcat 安装目录下的 conf ---> logging.properties .修改ConsoleHandler.endcoding GBK (如果在idea中设置了UTF-8字符集,这里就不需要修改) 2. CMD命令窗口设置编码 参考:WIN10的cmd查看编码方式&am…...

RGB颜色模型
RGB颜色模型是一种广泛应用于数字图像和计算机图形领域的颜色表示方法 一、基本概念 RGB 代表红色(Red)、绿色(Green)和蓝色(Blue)三种基本颜色。这些颜色被视为加色模型中的原色,意味着它们可…...

智能工厂的软件设计 创新型原始制造商(“创新工厂“)的Creator原型(统一行为理论)之2
Q8、今天我们继续昨天开始的 “智能工厂的软件设计”以“统一行为理论”为指导原则的 创新型原始制造商的Creator伪代码--创新工厂“原型”。这是在前述将“程序program”问题的三个体现“方面”(逻辑/语言/数学) 视为符号学的三分支(语用语义…...

【个人博客hexo版】hexo安装时会出现的一些问题
项目场景: 项目场景:在完成了GitHub仓库和git的连接之后,就要新建一个文件夹(例如hexo blog)进行下一步hexo的使用 问题描述 例如:如图所示 原因分析: 这些error不用看它到底是什么…...

道路裂缝,坑洼,病害数据集-包括无人机视角,摩托车视角,车辆视角覆盖道路
道路裂缝,坑洼,病害数据集 包括无人机视角,摩托车视角,车辆视角 覆盖道路所有问题 一共有八类16000张 1到7依次为: [横向裂缝, 纵向裂缝, 块状裂缝, 龟裂, 坑槽, 修补网状裂缝, 修补裂缝, 修补坑槽] 道路病害(如裂缝、…...

java接口文档配置
接口文档配置 一. swagger与knife4j 配置 1. 导入依赖 <!--swagger接口文档说明--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId> </dependency> <dependency><groupId>…...

【服务器第二期】mobaxterm软件下载及连接
【服务器第二期】mobaxterm软件下载及连接 前言什么是SSH什么是FTP/SFTP mobaxterm软件介绍mobaxterm软件下载SSH登录使用方法1-新建ssh连接方法2-打开已有的ssh连接方法3-通过ssh命令建立连接 SFTP数据传输方法1-建立ssh连接后直接拖拽方法2-建立sftp连接再拖拽方法3-直接使用…...

排序-----计数排序(非比较排序)
原理: 存在的问题:数组空间浪费 所以要相对映射,不要绝对映射 calloc()函数的功能是:为num个大小为size的元素开辟一块空间,并且把空间的每个字节初始化为0. // 时间复杂度:O(Nrange) // 只适合整数/适合范围集中 // 空间范围度:…...