前端项目代码开发规范及工具配置

在项目开发中,良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。

项目规范及工具

    • 集成 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-prettiereslint-config-prettier

eslint-plugin-prettierPrettier 的规则设置到 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

我们在项目中已集成 ESLintPrettier,在编码时,这些工具可以对我们写的代码进行实时校验,在一定程度上能有效规范我们写的代码,但团队可能会有些人觉得这些条条框框的限制很麻烦,选择视“提示”而不见,依旧按自己的一套风格来写代码,或者干脆禁用掉这些工具,开发完成就直接把代码提交到了仓库,日积月累,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.jsonscripts,增加 "prepare": "husky install"
    在这里插入图片描述

2. 配置 lint-staged

lint-staged 这个工具一般结合 husky 来使用,它可以让 huskyhook 触发的命令只作用于 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
    在这里插入图片描述

至此,huskylint-staged 组合配置完成。


希望上面的内容对你的工作学习有所帮助!欢迎各位一键三连哦~

各位 加油!

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 基于Python的食品销售数据分析系统 SpringBoot+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

LeetCode Hot100 C++ 哈希 1.两数之和

LeetCode Hot100 C 1.两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按…

基于STM32的智能花盆控制系统设计-设计说明书设计

设计摘要: 随着人们对室内绿植的热爱与需求日益增长,智能花盆控制系统作为一种新兴的智能化管理方式,受到了广泛关注。本文旨在设计一种基于STM32的智能花盆控制系统,以实现对花盆的自动浇水、温湿度监测和光照控制等功能。 在硬…

Android轻量级RTSP服务使用场景分析和设计探讨

技术背景 好多开发者,对我们Android平台轻量级RTSP服务模块有些陌生,不知道这个模块具体适用于怎样的场景,有什么优缺点,实际上,我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景&#…

基于对数变换的图像美白增强,Matlab实现

博主简介:matlab图像处理(QQ:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于对数变换的图像美白增强,用matlab实现。 一、案例背景和算法介绍 这次案例是美白算法&…

大数据可视化-三元图

三元图是一种用于表示三种变量之间关系的可视化工具,常用于化学、材料科学和地质学等领域。它的特点是将三个变量的比例关系在一个等边三角形中展示,使得每个点的位置代表三个变量的相对比例。 1. 结构 三个角分别表示三个变量的最大值(通常…

爬虫 ----hook

目录 定义: 了解什么是hook? 举例 hook XHR请求 XMLHttpRequest 案例地址: Interceptors-拦截器 HOOK cookie操作 cookie 示范 常见的hook代码总结 1.Hook Cookie 2.Hook Header 3.Hook URL 4.Hook JSON.stringify 5.Hook JSON.parse 6.Ho…

蓝桥杯嵌入式的学习总结

一. 前言 嵌入式竞赛实训平台(CT117E-M4) 是北京国信长天科技有限公司设计,生产的一款 “ 蓝桥杯全国软件与信息技术专业人才大赛-嵌入式设计与开发科目 “ 专用竞赛平台,平台以STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提…

conda环境下module ‘numba.types‘ has no attribute ‘Macro‘问题解决

1 问题描述 conda环境下运行数据处理&#xff0c;报出如下错误&#xff1a; Traceback (most recent call last):File "train_preprocess.py", line 13, in <module>import audioFile "/opt/service/lipsync/audio.py", line 1, in <module>…

橙子质量检测系统源码分享

橙子质量检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

基于yolov5滑块识别破解(一)

由于内容较长&#xff0c;将分为两个部分来说明&#xff0c;本文讲解yolov5的部署与训练。 1.YOLOv5部署 云端部署&#xff08;训练&#xff09; 服务器创建 如果自己的显卡算力不是很好的&#xff0c;或者是核显电脑&#xff0c;可以租用算力&#xff0c;价格还行一块钱左右就…

知乎:从零开始做自动驾驶定位; 注释详解(二)

这个个系统整体分为: 数据预处理 前端里程计 后端优化 回环检测 显示模块。首先来看一下数据预处理节点做的所有事情&#xff1a; 数据预处理节点 根据知乎文章以及代码我们知道: 节点功能输入输出数据预处理1.接收各传感器信息2.传感器数据时间同步 3.点云运动畸变补偿 4.传…

20 基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示&#xff0c;设置电流阈值为80&#xff0c;电流小阈值为50&#xff0c;电压阈值为60&#xff0c;温度阈值…

【Qt网络编程】Tcp多线程并发服务器和客户端通信

目录 一、编写思路 1、服务器 &#xff08;1&#xff09;总体思路widget.c&#xff08;主线程&#xff09; &#xff08;2&#xff09;详细流程widget.c&#xff08;主线程&#xff09; &#xff08;1&#xff09;总体思路chat_thread.c&#xff08;处理聊天逻辑线程&…

SQL 多表联查

目录 1. 内联接&#xff08;INNER JOIN&#xff09; 2. 左外联接&#xff08;LEFT JOIN&#xff09; 3. 右外联接&#xff08;RIGHT JOIN&#xff09; 4. 全外联接&#xff08;FULL JOIN&#xff09; 5. 交叉联接&#xff08;CROSS JOIN&#xff09; 6. 自联接&#xff0…

MySQL篇(存储引擎)(持续更新迭代)

目录 一、简介 二、使用存储引擎 1. 建表时指定存储引擎 2. 查询当前数据库支持的存储引擎 三、三种常见存储引擎 1. InnoDB存储引擎 1.1. 简介 1.2. 特点 1.3. 文件格式 1.4. 逻辑存储结构 表空间 段 区 页 行 2. MyISAM存储引擎 2.1. 简介 2.2. 特点 2.3. …

【Linux】入门【更详细,带实操】

Linux全套讲解系列&#xff0c;参考视频-B站韩顺平&#xff0c;本文的讲解更为详细 目录 1、课程内容 2、应用领域 3、概述 4、 Linux和Unix 5、VMware15.5和CentOS7.6安装 6、网络连接三种方式 7、虚拟机克隆 8、虚拟机快照 9、虚拟机迁移删除 10、vmtools 11、目录…

Gartner:中国企业利用GenAI提高生产力的三大策略

作者&#xff1a;Gartner高级首席分析师 雷丝、Gartner 研究总监 闫斌、Gartner高级研究总监 张桐 随着生成式人工智能&#xff08;GenAI&#xff09;风靡全球&#xff0c;大多数企业都希望利用人工智能&#xff08;AI&#xff09;技术进行创新&#xff0c;以收获更多的业务成果…

python是什么语言写的

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言。现今Python语言很火&#xff0c;可有人提问&#xff0c;这么火的语言它的底层又是什么语言编写的呢&#xff1f; python是C语言编写的&#xff0c;它有很多包也是用C语言写的。 所以说&#xff0c;C语言还是很…

SSM+vue音乐播放器管理系统

音乐播放器管理系统 随着社会的发展&#xff0c;计算机的优势和普及使得音乐播放器管理系统的开发成为必需。音乐播放器管理系统主要是借助计算机&#xff0c;通过对首页、音乐推荐、付费音乐、论坛信息、个人中心、后台管理等信息进行管理。减少管理员的工作&#xff0c;同时…