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

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

项目规范及工具

    • 集成 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.xdnf.cn/news/144254.html

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

相关文章

任务调度控制台定制规格要求

在当今高度自动化与数字化的企业环境中,任务调度系统作为业务运营的核心支撑之一,其性能与灵活性直接影响到整体工作效率与服务质量。因此,定制一套符合企业特定需求的任务调度控制台显得尤为重要。接下来就给大家具体的阐述一下任务调度控制…

2024 vue3入门教程:02 我的第一个vue页面

1.打开src下的App.vue,删除所有的默认代码 2.更换为自己写的代码, 变量msg:可以自定义为其他(建议不要使用vue的关键字) 我的的第一个vue:可以更换为其他自定义文字 3.运行命令两步走 下载依赖 cnpm i…

ModbusTCP报文详解

Modbus TCP与Modbus Rtu(ASCI)数据帧的区别 总结:Modbus TCP就是在Modbus Rtu(ASCI)基础上去掉CRC,再加上六个0一个6 Modbus TCP MBAP报文头 域长度描述客户机服务器事务处理标识符2字节Modbus请求/响应事务处理的识别客户机启动服务器从接收的请求中重…

开放式耳机好不好用?六条绝妙选购要点避免踩坑

​开放式耳机目前非常流行,它们以时尚、美观和舒适著称,迅速赢得了众多用户的喜爱,成为了耳机市场的新宠。与传统的入耳式耳机相比,开放式耳机佩戴更稳固,对耳朵也更为温和。尽管有些人认为它们价格不菲,甚…

机器人的动力学——牛顿欧拉,拉格朗日,凯恩

机器人的动力学推导方法有很多,常用得有牛顿,拉格朗日,凯恩等方法,接下来,简单说说他们之间的使用。注:这里不考虑怎么来的,只说怎么应用。 参考1:4-14动力学分析方法-牛顿—欧拉方…

第J8周:Inception v1算法实战与解析

本文为365天深度学习训练营 中的学习记录博客原作者:K同学啊 任务: 1.了解并学习下图 a《卷积计算过程中》的卷积层运算量的计算过程(储备知识->卷积层运算量的计算) 2.了解并学习卷积层的并行结构与1x1卷积核部分内容&#xf…

基于STM32的光敏电阻检测及OLED显示仿真(库函数)

本专栏所有源资料都免费获取,无任何隐形消费。 注意事项:STM32仿真会存在各种各样BUG,且尽量按照同样仿真版本使用。本专栏所有的仿真都采用PROTEUS8.15。 本文已经配置好STM32F103C8T6系列,在PROTUES仿真里,32单片机一般只用一种型号,如需其他型号,可改名。 本次功能…

【C盘清理】Pycharm远程调试重度使用者C盘清理

文章目录 1 remote source 1 remote source 找到本地的这个路径C:\Users\verse\AppData\Local\JetBrains\PyCharm2022.3\remote_sources 这个文件夹是 PyCharm 在进行远程调试时使用的,它包含了远程服务器上的源代码副本。当你在 PyCharm 中设置远程调试并启动调试会…

如何测试和验证API的性能和稳定性?

在开发过程中,测试和验证API的性能和稳定性是确保软件质量的关键步骤。以下是一些有效的方法和最佳实践: 功能测试:首先,确保API的所有功能按预期工作。这包括对请求参数、方法、路径和预期响应的理解,以及对正常流程和…

飞机表面缺陷检测系统源码分享

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

R高级绘图 | 不用 Cytoscape 也能绘制精美的蛋白互作(PPI)网络图啦!| STRING 网站 + R 代码

在进行 PPI 网络图绘制时,我们通常会将 STRING 网站与 Cytoscape 软件结合使用。但是经常有小伙伴们苦恼,不太会用 Cytoscape 软件进行处理可咋整呐!之前我也吭哧吭哧学了点 Cytoscape,后来偶然的一个机会,我发现可以直…

python 识别省市、区县并组建三级信息数据库

一、网址: 全国行政区划信息查询平台 二、分析并搭建框架 检查网页源码: 检查网页源码可以发现: 所有省级信息全部在javaScript下的json中,会在页面加载时加载json数据,填充到页面的option中。 1、第一步&#xff1a…

MATLAB系列08:输入/输入函数

MATLAB系列08:输入/输入函数 8. 输入/输入函数8.1 函数textread8.2 关于load和save命令的进一步说明8.3 MATLAB文件过程简介8.4 文件的打开和关闭8.4.1 fopen函数8.4.2 fclose函数 8.5 二进制 I/O 函数8.5.1 fwrite 函数8.5.2 fread函数 8.6 格式化 I/O 函数8.6.1 f…

C语言 | Leetcode C语言题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; int cmp(const void *a, const void *b) {return *(int*)a < *(int*)b; }int thirdMax(int* nums, int numsSize){qsort(nums, numsSize, sizeof(nums[0]), cmp);int diff 0;for (int i 1; i < numsSize; i) {if (nums[i] ! nums[i…

(黑马点评) 五、探店达人系列功能实现

5.1 发布和查看探店笔记 5.1.1 发布探店笔记 这块代码黑马已经完成了&#xff0c;在发布探店笔记界面&#xff0c;有两块内容是需要上传的。一是笔记内容&#xff0c;二是笔记配图。其中笔记配图部分黑马使用的是上传到本地前端服务器上面的。我我觉得可以将图片文件发布在阿里…

【靶点Talk】免疫检查点争夺战:TIGIT能否超越PD-1?

曾经的TIGIT靶点顶着“下一个PD-1”的名号横空出世&#xff0c;三年的“征程”中TIGIT走过一次又一次的失败&#xff0c;然而面对质疑和压力仍有一批公司选择前行。今天给大家分享TIGIT靶点的相关内容&#xff0c;更多靶点科普视频请关注义翘神州B站和知乎官方账号。 TIGIT的“…

如何使用Java代码实现日期的比较以及如何在列表中按照日期进行排序

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在Java编程中&#xff0c;经常需要处理日期和时间相关的操作。本文将向您展示如何使用Java代码实现日期的比较以及如何在列表中按照日期进行排序。将通过以下几个步骤来实现这个目标&#xff1a; 理解日期比较&…

【2025】基于微信小程序的网上点餐系统设计与实现、基于微信小程序的智能网上点餐系统、微信小程序点餐系统设计、智能点餐系统开发、微信小程序网上点餐平台设计

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

C语言深入理解指针(二)

目录 指针运算指针-整数指针-指针指针的关系运算 野指针野指针成因指针未初始化指针越界访问指针指向的空间释放 如何规避野指针指针初始化注意指针越界指针不使用时就用NULL避免返回局部变量的地址 assert断言指针的使用和传址调用传址调用例子&#xff08;strlen函数的实现&a…

Euro 2024 足球中的IMU技术突破

在体育技术领域&#xff0c;IMU&#xff08;惯性测量单元&#xff09;技术正以前所未有的方式重塑足球比赛。Adidas Fussballliebe Finale足球&#xff0c;作为首个在欧洲锦标赛中采用公司“连接球技术”的官方比赛用球&#xff0c;展示了IMU技术在现代足球中的应用。以下是这款…