前端格式化工具使用(eslint、stylelint、prettier、lint-staged和husky搭配格式化代码)

news2024/9/28 0:44:48

目录

eslint

安装eslint

.eslintrc.js

env

extends

parser

parserOptions

rules

globals

plugins

 屏蔽eslint检测具体规则

官方规则 

stylelint

安装stylelint 

创建stylelint配置文件

.eslintrc.js

extends

sass文件的格式检查

prettier

安装使用prettier

lint-staged

git hooks介绍


eslint

一个用来识别ECMAScript/JavaScript并且按照规则给出报告的代码检测工具,他就是一个工具,检查代码。

安装eslint

npm install eslint -D

初始化eslint配置文件

eslint --init、

然后通过项目选择相应的选项,之后会自动生成.eslintrc.js的配置文件。之后可以通过eslint命令来检测和修改格式问题。

eslint 文件名        检测该文件的格式

eslint 文件名 --fix  自动修复文件

.eslintrc.js

module.exports = {
  env: {
    browser: true,//运行在浏览器环境,有window对象、document对象
    es2020: true
  },
  extends: [
    'standard'
  ],
  parser: '@typescript-eslint/parser',
  parserOptions:{
    ecmaVersion: 5
  },
  rules:{
    'no-alert': "error"// "off" "warn" "error" 
  },
  globals: {
    "jQuery": "readonly"
  },
  plugins: [
    'react'
  ]
}

env

代码运行环境

extends

数组,继承共享配置。例如eslint-plugin-react插件中导出的共享配置有'plugin:react/recommended'。

parser

指定语法解析器,上面配置的是typescript语法解析器。

parserOptions

语法解析器相关配置,当ecmaVersion:5时不能使用es6的相关语法了。

rules

配置eslint中的校验规则开启和关闭。

globals

配置全局的变量。

plugins

插件,会默认省略eslint-plugin('react'代表'eslint-plugin-react'。

例如react中通常eslint检测会报下面错误,可以通过引入eslint-plugin-react插件,然后在rules中添加''react/jsx-users-react':2,'react/jsx-uses-vars':2来开启规则避免报错。

 注意也可以通过eslint-plugin-react插件中导出的共享配置来解决,extends中添加'plugin:react/recommended'。

 屏蔽eslint检测具体规则

console.log('1') // eslint-disable-line no-console

官方规则 

List of available rules - ESLint中文

stylelint

是一个强大的,现代的代码检查工具,与ESLint类似,Stylelint能够通过定义一系列的编码风格规则帮助我们避免在样式表中出现错误。 

安装stylelint 

npm install stylelint  -D

创建stylelint配置文件

和eslint不同,需要手动创建.stylelintrc.js文件。

stylelint 文件名        检测该css文件的格式

stylelint 文件名 --fix  自动修复css文件

.eslintrc.js

module.exports = {
  extends: [
    'stylelint-config-standard',
    'stylelint-config-sass-guidelines'
  ],
}

extends

继承共享配置。

注意和eslint不同的是标准的共享配置需要安装,npm install stylelint-config-standard然后在extends中引入 stylelint-config-standard。

sass文件的格式检查

需要引入stylelint-config-sass-guidelines ,npm install stylelint-config-sass-guidelines 然后在extends中继承'stylelint-config-sass-guidelines'即可。

prettier

一个“有主见”的代码格式化工具。

安装使用prettier

npm install prettier  -D

stylelint 文件名        将格式化后的内容输出到控制台(不会改变源文件)

stylelint . --write  修复格式化当前路径下所有文件(改变源文件)。

lint-staged

在代码提交之前,进行代码规则检查能够确保进入git库的代码都是符合代码规则的。但是整个项目上运行lint速度会很慢,lint-staged能够让lint只检测暂存区的文件,所以速度很快。通常搭配husky使用。

例如下面安装husky和lint-staged后配置package.json文件如下:

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.js": "eslint --fix"
  }
}

上面表示在commit代码之前自动运行lint-staged对暂存区的js文件用eslint格式化修复。

git hooks介绍

https://blog.csdn.net/AIWWY/article/details/128612376?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128612376%22%2C%22source%22%3A%22AIWWY%22%7D 

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

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

相关文章

Vue组件-插槽

一、插槽 1. 组件的三大核心:属性(data、props)、事件、插槽 2. 插槽(slot) 插槽(slot)将父组件的内容与子组件的模板相混合,从而弥补了视图的不足。 插槽的目的:使组件…

ConstraintLayout2

ConstraintLayout2ImageFilterView 属性 app:altSrc:altSrc提供的资源将会和src提供的资源通过crossfade属性形成交叉淡化效果。默认情况下,crossfade0,altSrc所引用的资源不可见,取值在0-1app:saturation:float型,默认1&#xf…

FPGA知识汇集-时钟系统的移植

ASIC 和FPGA芯片的内核之间最大的不同莫过于时钟结构。ASIC设计需要采用诸如时钟树综合、时钟延迟匹配等方式对整个时钟结构进行处理,但是 FPGA设计则完全不必。因为后者有内建的时钟资源:锁相环、频率综合器、移相器,以及具有低延迟特性的专用时钟布线网…

Unity基于状态机的架构与设计

我们做游戏的时候经常会有流程控制,流程控制的方法有很多,行为决策树,状态机等。本质差别都不大,就是把每一段执行逻辑做成一个一个的节点,根据条件执行某个节点,切换到某个节点。今天给大家分享一下基于状…

如何在VSCode中添加Python解释器并安装Python库

如何在VSCode中添加Python解释器并安装Python库作者介绍一. 安装VScode编辑器二. 安装Python解释器三. 在VScode中添加Python解释器四. 创建项目并在VScode中打开;五、在VScode中安装Python库作者介绍 孟莉苹&#xf…

【TypeScript入门】TypeScript入门篇——对象

对象其实就是一种封装的概念,它把事物封装成一个类,然后提供类的接口,而具体的过程人们是看不到的。 一、对象实例 二、TypeScript 类型模板 三、鸭子类型(Duck Typing) 对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等&am…

Linux常用命令——lsof命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) lsof 显示Linux系统当前已打开的所有文件列表lsof -p pid 补充说明 lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系…

十四、Node.js 中 session验证登录

在前一篇内容中讲到这个cookie实现验证登录,cookie是存储在客户端的,而session是存储在服务器的,相比较session的安全性会更高,session对象存储特定用户会话所需要的属性以及配置信息,服务通过session对象将用户的信息…

CPU使用率过高的原因及解决方法

常见的CPU使用率过高可不是职场CPU哦,而是电脑的中央处理器,CPU作为计算机系统重要的运算和控制核心,可谓是“很忙”的存在。在我们日常使用电脑设备时,由于打开的软件、游戏、网页等程序容易导致电脑运作卡顿,这时候就…

《图机器学习》-Traditional Methods for Machine Learning in Graphs

Traditional Methods for Machine Learning in Graphs前言一、Node-Level Tasks and Features二、Link-Level Tasks and Features三、Graph-Level Tasks and Features前言 图机器学习任务可以分为三种: Node-level prediction:节点级的预测 如对节点进…

最优控制学习笔记3----无约束条件的泛函极值问题

无约束条件的最优控制问题 设函数 x(t)x(t)x(t) 在 [t0,tf][t_0, t_f][t0​,tf​] 区间上连续可到,考虑 Lagrange型性能指标函数 J[x(t)]∫t0tfL[x(t),x˙(t),t]dtJ[x(t)]\displaystyle\int_{t_0}^{t_f}L[x(t), \dot{x}(t), t]dtJ[x(t)]∫t0​tf​​L[x(t),x˙(t),…

Linux---常见指令

目录 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令 06.rmdir指令 && rm 指令 07.man指令 08.cp指令 09.mv指令 10. cat指令 11.more指令 12.less指令 13.head指令 13.tail指令 简述重定向和管道概念: 14.时间相关的指令 15.Ca…

Git Fork操作与配置

我理解的git fork:将别人(张三)仓库包括文件,提交历史,issues等复制一份到自己的github账号下。我们在可以通过修改本地项目的代码,然后,给(张三)发送一个Merge Request&…

C. Yet Another Tournament(贪心)

Problem - C - Codeforces 通用领域 医学 计算机 金融经济 你正在参加另一场比赛。有n1个参与者:你和其他n个对手,编号从1到n。 每两名参与者将相互竞争一次。如果对手i和对手j比赛,他获胜当且仅当i>j。 当我的对手和你对弈时,一切都变…

rabbitmq+netcore6 【4】Routing:路由

文章目录1)前言2)Direct exchange 直接类型的交换机3)Multiple bindings 多绑定4)Emitting logs 发送日志5)Subscribing 订阅6)综合以上代码准备工作生产者消费者1消费者2消费者3运行结果官网参考链接&…

USB大容量存储设备浅析

一 USB 设备类 SB 引入了设备类的概念,根据每一类驱动程序的功能将USB设备分为几大类,标准的几大类包括: 大容量存储类 网络类 集线器类 串行转换器 音频类 视频类 图像类 调制解调器 打印机 HID(Human Interface Device 人机接口设备)每一…

我记不住的那些编程语言的语法(数组)-1

背景:我记不住各种语言的语法,例如C、Java、Go、Python、JavaScript,大概就是常用的这几种语言,每种语言有其自己的语法规范,有的时候会记混了,所以想记录一下细节。这个系列会不定期的更新,本期…

一路坎坷,入局到突破【2022年度总结】

秃秃 1> 来到CSDN: 2019年5月时决定只身一人去外省实习,顺便在CSDN这个“资源库”注册了一下账号。直到我20年在公司做技术分享时,才真正开始在CSDN上的创作; 21年的时候也只是把CSDN当做笔记,就自己写一写&…

行业洞察|猴子可以打字,动物走进元宇宙还有多远?

很多学者和专家认为,人类与动物的区别在于语言的使用。人类可以使用语言,但是动物不会。其实也许是我们人类听不懂动物的语言,并不是他们不会使用。本质在于沟通的媒介不同,导致我们无法相互交流。但是,埃隆马斯克&…

App原型设计规范

一、界面尺寸 1.ios分辨率 2.android界面尺寸 ① 安卓分辨率 ②常见安卓手机分辨率及尺寸 一般情况下大家在设计app端原型的时候,由于现在ios和安卓慢慢在趋向一致,所以基本上都只会设计一套原型,尺寸方面一般都是按照iphone6的750*1344(2倍…