全局代码规范配置 ( Eslint )

项目团队开发 为了保证统一的代码格式规范,可以借助两个插件以及 eslint 自由配置进行

首先需要在 vscode 安装 

Eslint           Prettier - Code formatter

安装所需依赖

pnpm install --save-dev eslint eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-import

pnpm install --save-dev --save-exact prettier

------------------------------------------------------------------------------------------------------------------------

 1)首先在根目录下创建   .eslintrc.cjs 文件,这个文件中用来配置你们的代码格式规范,内容如下,以下是我自己个人习惯的配置,可以根据你们的实际需求更改
module.exports = {
    env: {
        browser: true,
        es2021: true,
        node: true,
    },
     parser: '@typescript-eslint/parser',
    extends: [
        'eslint:recommended',
        'plugin:react/recommended',
        'plugin:react-hooks/recommended',
        'plugin:jsx-a11y/recommended',
        'prettier',
        'plugin:@typescript-eslint/recommended'
    ],
    parserOptions: {
        ecmaFeatures: {
            jsx: true,
        },
        ecmaVersion: 12,
        sourceType: 'module',
    },
    plugins: ['react', 'react-hooks', 'jsx-a11y','import'],
      settings: {
    react: {
      version: 'detect',
    },
  },
  rules: {
    // "off"可以替换成0,代表关闭该规则
    // "warn"可以替换成1,代表打开规则,提示警告,但不会报错
    // "error"可以替换成2,代表打开规则,直接报错
    'no-var': 2, // 不能使用var声明变量
    'no-extra-semi': 2, // 禁止多余的冒号
    semi: 2,
    'semi-style': ['error', 'last'],
    '@typescript-eslint/no-extra-semi': 2,
    // '@typescript-eslint/indent': ['error', 2], // 缩进 2
    quotes: ['error', 'single'], // 字符串使用单双引号,double,single
    'no-dupe-keys': 2, // 在创建对象字面量时不允许键重复 {a:1,a:1}
    'no-dupe-args': 2, // 函数参数不能重复
    'no-const-assign': 2, // 禁止修改const声明的变量
    'no-eq-null': 2, // 禁止对null使用==或!=运算符
    'no-eval': 1, // 禁止使用eval
    'no-ex-assign': 2, // 禁止给catch语句中的异常参数赋值
    'no-extend-native': 2, // 禁止扩展native对象
    'no-extra-bind': 2, // 禁止不必要的函数绑定
    'no-inline-comments': 0, // 禁止行内备注
    'no-inner-declarations': [2, 'functions'], // 禁止在块语句中使用声明(变量或函数)
    'no-invalid-regexp': 2, // 禁止无效的正则表达式
    'no-invalid-this': 2, // 禁止无效的this,只能用在构造器,类,对象字面量
    'no-irregular-whitespace': 2, // 不能有不规则的空格
    'no-labels': 2, // 禁止标签声明
    'no-lone-blocks': 2, // 禁止不必要的嵌套块
    'no-multi-spaces': 1, // 不能用多余的空格
    'no-multi-str': 2, // 字符串不能用\换行
    'no-multiple-empty-lines': [1, { max: 2 }], // 空行最多不能超过2行
    'no-native-reassign': 2, // 不能重写native对象
    'no-negated-in-lhs': 2, // in 操作符的左边不能有!
    'no-nested-ternary': 0, // 禁止使用嵌套的三目运算
    'no-new': 1, // 禁止在使用new构造一个实例后不赋值
    'no-new-func': 1, // 禁止使用new Function
    'no-new-object': 2, // 禁止使用new Object()
    'no-new-require': 2, // 禁止使用new require
    'no-new-wrappers': 2, // 禁止使用new创建包装实例,new String new Boolean new Number
    'no-redeclare': 2, // 禁止重复声明变量
    'no-regex-spaces': 2, // 禁止在正则表达式字面量中使用多个空格 /foo bar/
    'no-restricted-modules': 0, // 如果禁用了指定模块,使用就会报错
    'no-throw-literal': 2, // 禁止抛出字面量错误 throw 'error';
    // 'no-undef': 1, // 不能有未定义的变量
    'no-undef-init': 2, // 变量初始化时不能直接给它赋值为undefined
    // 'no-undefined': 2, // 不能使用undefined
    'no-unexpected-multiline': 2, // 避免多行表达式
    'no-param-reassign': ['error', { props: false }], // 防止对函数参数进行重新赋值
    'no-console': 'off', // 不进行检查console.log
    'import/prefer-default-export': 'off',
    // 禁止使用递增和递减运算符(++和--)
    'no-plusplus': [
      'error',
      {
        allowForLoopAfterthoughts: true,
      },
    ],
    '@typescript-eslint/ban-types': 'off',
    'react/display-name': 'off',
    'react/jsx-uses-react': 'off',
    'react/react-in-jsx-scope': 'off',
    'import/extensions': 'off',
    'import/no-unresolved': 'off',
    'import/no-extraneous-dependencies': ['error', { devDependencies: true }], // 检测项目中导入的外部模块是否被正确地列为项目的依赖项
    // 关闭variable必须全部大写规则
    '@typescript-eslint/naming-convention': [
      'error',
      {
        selector: 'variable',
        modifiers: ['const'],
        format: null,
      },
    ],
  },
};
2)还是在根目录创建 .eslintignore ;这个文件内部写的是你不需要格式化的文件,比如写上mock,那么 mock 这个文件里面的代码就不会受到格式化的影响,我的配置如下
node_modules
dist
mock
public

3)在根目录创建 .prettierrc.js ;我的配置如下( 照搬就可以 )
module.exports = {
    semi: false,
    singleQuote: true,
    trailingComma: 'all',
    printWidth: 80,
    tabWidth: 2,
};
4)在 vscode 的 settings.json 加入以下代码
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true,
  "source.fixAll.stylelint": true,
  "source.organizeImports": true
}

全部配置好之后可以运行

npx eslint .
npx prettier --check .

检查是否配置成功,如果出现报错,根据报错安装所对应的依赖包就可以。

如有特需的配置也可前往 Eslint 官网去查看详细:Configure ESLint - ESLint - Pluggable JavaScript Linter

时小记,终有成。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

球星马布里申请香港高才通计划落户香港拿身份!谈谈香港身份的好处!

球星马布里申请香港高才通计划落户香港拿身份!谈谈香港身份的好处! 据香港政府新闻网14日消息,前美国职业篮球联赛球员马布里,日前向香港人才服务办公室递交高端人才通行证计划的申请。香港劳工及福利局局长孙玉菡与他会面&#x…

黄金投资面对K线图有哪些好用的交易策略?

在现货黄金交易中,学会观察K线图能够帮助投资者进行市场分析,根据K线图呈现出来的市场走势制定交易策略,是技术分析的主要作用。在黄金买卖过程中掌握K线交易技巧能够提升理财效率,所以这也就成为了炒金者的必修课。 K线图是以交…

使用手机作为电脑的麦克风和摄像头外设

工具 Iriun Iriun 电脑端安装:Iriun Android: Iriun 4K Webcam for PC and Mac - Apps on Google Play Apple: Iriun Webcam for PC and Mac on the App Store 基础功能免费,普通使用足够了。 付费功能: 使用 这里有介绍&#xff1a…

中国人民大学与加拿大女王大学金融硕士——人生下半场,用实力为自己“撑腰”

人生如同一场漫长的旅程,每个人都在不断地前行,经历着种种的人生阶段。当我们迈入人生的下半场,我们不再是无知少年,而是逐渐成为社会的中坚力量。在这个阶段,我们不仅要面对更多的挑战和压力,还需要用实力…

VulnHub DC-6

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

【多线程面试题二十五】、说说你对AQS的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说说你对AQS的理解 参…

Facebook游戏出海营销指南

当谈到Facebook游戏出海营销时,有一些关键的策略和指南可以帮助你在国际市场上取得成功。下面是一个详细的指南,帮助你了解如何有效地推广和推出你的游戏。 1、了解目标市场 在开始出海营销之前,你需要对你的目标市场进行深入的研究。了解该…

11月15日星期三今日早报简报微语报早读

1、2023胡润女企业家榜出炉:郭得胜夫人邝肖卿首次成为中国女首富,龙湖吴亚军蝉联中国白手起家女首富; 2、叶剑英元帅夫人吴博逝世,享年106岁; 3、外交部:所谓“联合国军”是冷战产物,于法无据…

前端跨界面之间的通信解决方案

主要是这两个方案,其他的,还有 SharedWorker 、IndexedDB、WebSocket、Service Worker 如果是,父子嵌套 iframe 还可以使用 window.parent.postMessage(“需要传递的参数”, ‘*’) 1、localStorage 核心点 同源,不能跨域(协议、端…

Matter 协议详解

目录 1、Matter 协议发展 1.1、什么是Matter 1.2、Matter能做什么 2、整体介绍 3、架构介绍 3.1、Matter网络拓扑结构 3.2、标识符 3.2.1、Fabric引用和Fabric标识符 3.2.2、供应商标识符(Vendor ID,VID) 3.2.3、产品标识符&#x…

【vue实战项目】通用管理系统:api封装、404页

前言 本文为博主的vue实战小项目系列中的第三篇,很适合后端或者才入门的小伙伴看,一个前端项目从0到1的保姆级教学。前面的内容: 【vue实战项目】通用管理系统:登录页-CSDN博客 【vue实战项目】通用管理系统:封装to…

【VSCode】Visual Studio Code 配置简体中文环境教程

介绍 Visual Studio Code(简称 VS Code)是一款轻量级的代码编辑器,它支持多种编程语言,并且具有丰富的功能和插件扩展。如果你更喜欢使用简体中文界面,那么本教程将向你展示如何在 VS Code 中配置简体中文环境。 步骤…

Django之模版层

文章目录 模版语法传值模版语法传值特性模版语法标签语法格式if模板标签for模板标签with起别名 模版语法过滤器常用过滤器 自定义过滤器、标签、inclusion_tag自定义过滤器自定义标签自定义inclusion_tag 模版导入模版继承 模版语法传值 模板层三种语法{{}}:主要与数据值相关{%…

YOLO目标检测——树叶检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用:生物多样性研究、林业管理、环境监测和教育科研等方面数据集说明:树叶分类检测数据,真实场景的高质量图片数据,数据场景丰富,总共十个类别。标签说明:使用lableimg标注软件标注,标…

【文件读取/包含】任意文件读取漏洞 afr_2

1.1漏洞描述 漏洞名称任意文件读取漏洞 afr_2漏洞类型文件读取漏洞等级⭐⭐漏洞环境dockers攻击方式 1.2漏洞等级 高危 1.3影响版本 暂无 1.4漏洞复现 1.4.1.基础环境 靶场dockers工具BurpSuite 1.4.2.环境搭建 1.kali创建docker-compose.yml文件 touch docker-compose.ym…

d3dx9_39.dll丢失怎么修复?d3dx9_39.dll丢失的四种修复办法分享

d3dx9_39.dll是DirectX库中的一个重要组件,属于Microsoft Direct3D 9 API。它提供了许多用于创建和渲染3D图形的函数。DirectX是一套开发多媒体应用程序的API,广泛应用于游戏、视频和图形处理等领域。d3dx9_39.dll文件主要负责处理3D图形渲染、动画、光源…

【C++】多态的使用详解

本篇要分享的内容是多态,以下为本篇目录。 目录 1.多态的概念 2. 多态的定义及实现 3.虚函数 4.C11 override和final 4.1final关键字 4.2override关键字 5.抽象类 5.1抽象类的概念 5.2接口继承和实现继承 1.多态的概念 通俗来说,就是多种形态…

【C++】泛型编程 ② ( 函数模板与普通函数区别 )

文章目录 一、函数模板与普通函数区别1、函数模板与普通函数区别2、代码示例 - 函数模板与普通函数区别 一、函数模板与普通函数区别 1、函数模板与普通函数区别 函数模板与普通函数区别 : 主要区别在于它们能够处理的 数据类型数量 和 灵活性 ; 自动类型转换 : 函数模板 不允许…

程序员进阶之路,该怎么走?

时代洪流,大浪淘沙。 逆水行舟,不进则退。 如果你游的速度慢于水流,要么你就是被剩下的沙子,要么就是即将被打翻的行舟了。。。 身为程序员时刻保持危机感,然后陷入内卷...... 卷又卷不赢,躺又躺不平。 …

基于stm32f103系列的简单软件I2C和硬件I2C通讯

这篇文章主要分为三个部分来阐述,分别是I2C的基本知识,软件I2C通讯,硬件I2C通讯。I2C的基本知识这一块,部分讲解以及图表来自b站江科大的up,很感谢这位up,大家可以关注一波。操作实现的时候,up使…