Vite 配置 Eslint 规范代码

2023-10-26

在经历过比较大型的项目协同开发后,代码规范成为了团队协同开发的棘手问题。今天,准备从头整理一份从编辑器 -> 代码编写过程中的规范总结。

一、代码风格统一

这里推荐使用 EditorConfig 配置,来规范不同的编辑器,不同的编辑器配置,所造成的代码风格不一致问题。

项目根目录创建 .editorconfig 配置文件

# 表示是最顶层的 EditorConfig 配置文件
root = true

[*] # 表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
indent_style = space # 缩
indent_size = 2 # 缩进大小
end_of_line = lf # 控制换行类型(lf | cr | crlf)
trim_trailing_whitespace = true # 去除行首的任意空白字符
insert_final_newline = true # 始终在文件末尾插入一个新行

[*.py] # 表示仅 py文件适用以下规则
max_line_length = off
trim_trailing_whitespace = false

这里要注意,如果使用的 VSCode 需要下载插件 EditorConfig VS Code ,其他的编译器( WebStormIDEA ),直接上配置即可。

二、集成 Eslint 配置
  1. 安装

    npm i eslint -D
    yarn add eslint --dev

  2. 初始化配置,这里根据当前的开发环境,框架以及项目的风格来决定配置项

    npx eslint --init

    (1):如何使用 Eslint,这里我们选择第三种:检查语法、发现问题并强制执行代码风格

    在这里插入图片描述

    (2):当前项目使用的模块化类型,我们这里选择 Javascript modules

    在这里插入图片描述

    (3):当前项目使用的框架,Vue.js

    在这里插入图片描述

    (4):是否使用 Typescript,到这里我们搭建的环境还没有配置 TS,暂时跳过

    在这里插入图片描述

    (5):运行的环境,这里我们选择浏览器

    在这里插入图片描述

    (6):选择代码风格指南,这里我们选择较为流行的 Airbnb

    在这里插入图片描述
    在这里插入图片描述

    (7):最后选择 Javascript 风格

    在这里插入图片描述

    (8):初始化结束,使用哪一种放视安装所需的插件,这里我们选择 yarn

    在这里插入图片描述

    (9):添加 Vite 运行的时候自动检测 eslint 规范

    yarn add vite-plugin-eslint --D

    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    import eslintPlugin from 'vite-plugin-eslint'
    
    export default defineConfig({
    	 plugins: [
    	    vue(),
    	    // 增加下面的配置项,这样在运行时就能检查 eslint 规范
    	    eslintPlugin({
    	      include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
    	    })
    	  ]
    })
    

    (10):配置 eslintrc.js 文件

    1. 安装 babel 插件

      yarn add @babel/core @babel/eslint-parser --dev

    2. 配置 Eslint 基本配置

      module.exports = {
        env: {
          browser: true,
          node: true
        },
        extends: [
          "eslint:recommended", // 使用推荐的eslint
          'plugin:vue/vue3-recommended' // 使用插件支持vue3
        ],
        parserOptions: {
          parser: '@babel/eslint-parser',
          sourceType: 'module',
          ecmaVersion: 12,
          allowImportExportEverywhere: true, // 不限制eslint对import使用位置
          ecmaFeatures: {
            modules: true,
            legacyDecorators: true
          },
          requireConfigFile: false // 解决报错:vue--Parsing error: No Babel config file detected for
        },
        plugins: [
          'vue'
        ],
        rules: {
        	...
        }
      }
      
    3. 配置 Eslint rules 规则
      这里可以根据团队规范去配置对应的规则,贴下我的一部分规则。更多配置可以去官网查阅:eslint rules 配置

      'semi': ['warn', 'never'],           // 禁止尾部使用分号
      'no-console': 'warn',                // 禁止出现console
      'no-debugger': 'warn',               // 禁止出现debugger
      'no-duplicate-case': 'warn',         // 禁止出现重复case
      'no-empty': 'warn',                  // 禁止出现空语句块
      'no-extra-parens': 'warn',           // 禁止不必要的括号
      'no-func-assign': 'warn',            // 禁止对Function声明重新赋值
      'no-unreachable': 'warn',            // 禁止出现[return|throw]之后的代码块
      'no-else-return': 'warn',            // 禁止if语句中return语句之后有else块
      'no-empty-function': 'warn',         // 禁止出现空的函数块
      'no-lone-blocks': 'warn',            // 禁用不必要的嵌套块
      'no-multi-spaces': 'warn',           // 禁止使用多个空格
      'no-redeclare': 'warn',              // 禁止多次声明同一变量
      'no-return-assign': 'warn',          // 禁止在return语句中使用赋值语句
      'no-return-await': 'warn',           // 禁用不必要的[return/await]
      'no-self-compare': 'warn',           // 禁止自身比较表达式
      'no-useless-catch': 'warn',          // 禁止不必要的catch子句
      'no-useless-return': 'warn',         // 禁止不必要的return语句
      'no-mixed-spaces-and-tabs': 'warn',  // 禁止空格和tab的混合缩进
      'no-multiple-empty-lines': 'warn',   // 禁止出现多行空行
      'no-trailing-spaces': 'warn',        // 禁止一行结束后面不要有空格
      'no-useless-call': 'warn',           // 禁止不必要的.call()和.apply()
      'no-var': 'warn',                    // 禁止出现var用let和const代替
      'no-delete-var': 'off',              // 允许出现delete变量的使用
      'no-shadow': 'off',                  // 允许变量声明与外层作用域的变量同名
      ...
      

    (11): 启动项目,测试效果

    可以看到,完美生效

    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vite 配置 Eslint 规范代码 的相关文章

  • javascript 使用 onclick 创建按钮

    我正在尝试使用 javascript 创建一个具有 onclick 事件的按钮 该事件调用 head 中定义的函数 该函数接收相对于按钮的 dom 对象作为参数 我该怎么做呢 ex
  • AngularJS 使用 $apply 而不使用 $scope

    我开始使用 AngularJS 并且接受了用它来编写控制器的约定 而不是用 scope 所以我的控制器看起来像这样 myApp controller SomeController function this myModel id 1 nam
  • 如何在光标下的所有元素上调用 mouseover?

    我有一个网络应用程序 每次单击时都会创建一个点 见下文 当我将鼠标悬停在一堆点上时 我希望光标下的每个点都会触发 mouseover 或 mouseenter 事件 然而 只有一个事件被触发 即堆栈 顶部 的点的事件 当鼠标移动到一堆多个点
  • 如何使用 axios / jest 测试失败的请求

    我创建了一个非常小的应用程序 如果您传递硬币和数量 它可以计算为某些加密货币支付的总价格 我想测试错误 但我总是收到 收到的承诺已解决而不是被拒绝 我相信这是因为如果 url 错误 axios 仍然会解决承诺 我遇到的第二个问题是 我尝试测
  • 如何从表中选择所有偶数 id?

    我想从 MySQL 数据库的表中选择所有甚至帖子 ID 然后显示它们 我还想获取所有带有奇怪 id 的帖子并将它们显示在其他地方 我想使用 PHP 来完成此操作 因为这是我使用的服务器端语言 或者 我是否必须选择所有帖子 然后使用 Java
  • 在 asp.net vb 中通过第一个下拉列表值填充第二个下拉列表

    我在使用 asp net vb 时遇到了一些问题 我想做的是有2个下拉框 第一个下拉菜单将有 1 2 3 例如 第二个下拉菜单将有 A 乙 C 默认情况下 但是 如果选择 1 我希望第二个下拉菜单自动选择 c 我不知道 JavaScript
  • 如何在 Node.js 中让一个 EventEmitter 监听另一个 EventEmitter?

    我想做这样的事情 var events require events var emitterA new events EventEmitter var emitterB new events EventEmitter emitterA ad
  • 为什么将数据存储为元素的属性存在风险?

    我一直在读同样的东西 直接在 DOM 元素上存储属性值是有风险的 因为可能会发生内存泄漏 但有人可以更详细地解释这些风险吗 按属性 我假设您指的是 DOM 元素上的属性 DOM 元素上的自定义属性安全吗
  • 是否可以覆盖 javaScript 原始数据类型?

    问题是不言自明的 我知道可以扩展原始数据类型 例如string但有可能覆盖它吗 这是在采访中被问到的一个问题 不 你不能覆盖任何东西 Ecma脚本定义原始类型 http es5 github com x4 3 2 Undefined Nul
  • Bing.com 如何创建放大的缩略图?

    当我使用 Bing com 搜索图像时 我发现它们的图像经过精心裁剪和排序 当您将鼠标放在图像上时 会弹出另一个窗口 其中显示放大的图像 我想在我的程序中做同样的事情 我检查了他们页面的源代码 他们正在使用 javascript 但我仍然不
  • 提交前验证表单(比检查空字段更复杂)

    我有一个包含时间输入的表单 具体来说 开放时间和结束时间 当按下提交按钮时 它会转到一个 php 页面 其中这些输入将添加到数据库中 在允许提交表单之前我想检查一些事情 例如 我想确保开始时间早于 小于 结束时间 这是表格 Opens
  • Web SQL 数据库 + Javascript 循环

    我正在尝试解决这个问题 但我自己似乎无法解决 我正在使用 Web SQL DB 但无法让循环正常使用它 I use for var i 0 i lt numberofArticles 1 i db transaction function
  • 使用 JavaScript 的计时器

    我想使用java脚本实现计时器 我想随着间隔的变化而减少计时器 Example假设我的计时器从 500 开始 我想要根据级别减少计时器 例如1 一级定时器应减1 且递减速度应较慢 2 2级定时器应递减2 递减速度应为中等3 3级定时器应减3
  • Window 与 Var 声明变量[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中使用 var 和不使用 var 的区别 https stackoverflow com questions 1470488 difference between using v
  • 使用Promise而不拒绝它会导致内存泄漏吗? [复制]

    这个问题在这里已经有答案了 代码如下 function test value return new Promise function fulfill reject try fulfill true catch e throw e 我担心的是
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • 使用 jQuery Tablesorter 操作后如何恢复当前页面?

    我正在使用 tablesorter 但无法找到有关插件 tablesorter 寻呼机的任何文档 问题是我有一个显示一些数据的表 并且在每一行中都有一个删除链接 该链接附加了要删除的元素的唯一标识符 显然 是否可以保存我正在删除的页面 然后
  • 如何根据所需表单输入的值更改 CSS 样式

    我想知道如何编写 javascript 来改变所需的表单元素的样式 如果它们有价值的话就改变它们 我想要做的是当所需的文本字段为空时 在它们周围有一个彩色边框 并在它们有值时删除边框样式 我想做的是编写一个 javascript 函数来检查
  • Serviceworker Bug event.respondWith

    我的 serviceworker 的逻辑是 当发生获取事件时 它首先获取包含一些布尔值 而不是 event request url 的端点 并根据我正在调用的值检查该值event respondWith 对于当前的获取事件 我正在提供来自缓
  • 使用 Lodash 将对象键转换为具有键值数量的数组[重复]

    这个问题在这里已经有答案了 我有一个产品对象 products bread 1 milk 2 cheese 2 chicken 1 我想要一个包含产品名称的数组 如下所示 products bread milk milk cheese ch

随机推荐

  • MyBatisPlus 分页查询

    首先要定义一个配置类 MybatisConfig 放在 config 类下 他的生效是通过拦截生效的 所以是要写拦截器的 这段拦截器的配置是固定的 CV 也可以 Configuration public class MybatisConfi
  • 卷积神经网络CNN原理——结合实例matlab实现

    程序及数据下载链接 https download csdn net download u010540396 10839936 程序及数据下载链接 https download csdn net download u010540396 108
  • INVALID_USER_SCODE问题的解决办法

    在用高德地图API的时候 还会遇见一个为题 就是总是提示 INVALID USER SCODE 当遇见这个问题的时候 一般的问题都是 注册key之后没有十分钟就开始使用这个key值了 另外一种情况就是注册的key值有问题 应该重新注册一个k
  • 使用STM32让示波器显示图片及播放动画思路的经验分享

    到手了一块某夕夕上一百三入手的STM32F407VE的开发板 一个字 香 把玩时发现了DAC这个看起来就很有意思的功能 软件输出了正弦波三角波之后突然想起了示波器的XY模式 刚好这个芯片有一个DAC两路通道 于是便折腾了一下用XY模式显示图
  • pgbackrest 简要使用说明

    测试环境 CentOS Linux release 7 4 1708 Core X64 PostgreSQL 10 1 Source pgbackrest pgbackrest release 1 27 tar gz 1 Test Simp
  • 5.1 activiti执行监听器ExecutionListener

    1 执行监听器的使用场景 1 1 人员动态分配 节点审批人员需要在流程运行过程中动态分配 当前任务节点完成的时候 指定需要指定下一个节点的处理人 比如 一个请假流程 a员工请假 需要指定下一步需要处理请假流程的领导 1 2 任务节点调取业务
  • MongoDB文档数据库

    一 引言 MongoDB 是一个开源的文档数据库 并是领先的NoSQL数据库 MongoDB 是由C 语言编写 通过本系列教程的讲解 使得学习者可以了解并掌握创建和部署高度可扩展和高性能的面向对象数据库MongoDB概念和理解 该系列教程是
  • 使用MATLAB做传热学分析及后处理——CFDTool 官方例程

    目录 前言 1 环境配置 2 问题背景 3 传热学例程 heat transfer3 最后 中国加油 武汉加油 前言 cfdtool 官网 https www cfdtool com 是一个MATLAB的扩展工具箱 既然看到这个CFD问题了
  • 消消乐游戏算法实现(三消乐)

    先上前端效果图 3消乐地图初始化的时候不允许有下面两种情况的发生 就是不允许3个 3个以上已经包含3个 所以只要判断3个就可以了 相同颜色的格子连在一起 下图是两种情况 细分分为6种情况 就是初始点为3个格子中的一个为一种情况 所以细分2
  • 多线程(五)线程的不安全原因及解决方案

    目录 一 什么是线程安全 二 线程不安全的原因 1 修改共享数据 2 原子性 3 内存可见性 4 指令重排序 三 解决线程安全方案 volatile 解决内存可见性和指令重排序 通过synchronized锁实现原子性操作 一 什么是线程安
  • SyntaxError: can‘t delete function call

    复习之前的python课件 抄代码的时候发现了一个问题 然后上网查 发现跟自己的情况好像不太符合 然后又看了一眼老师的课件 发现原来是自己无用了小括号的原因 因为那个counts是字典 它提取元素用的是方括号 不是小括号 改了之后就可以运行
  • 指针和数组笔试题解析【上篇】

    文章目录 1 前言 2 整型数组与指针 3 字符数组与指针 3 1 代码段 1 3 2 代码段 2 4 字符指针变量与数组 5 二维数组与指针 1 前言 数组 能够存放一组相同类型的元素 数组的大小取决于数组的元素个数和元素类型 指针 地址
  • linux安装enca

    简介 enca是Linux下的文件编码转换工具 1 查看是否安装enca 在命令行输入如下命令 若显示enca安装版本则表示已安装 enca version 2 安装enca 1 1 安装方式二 sudo命令安装 sudo apt get
  • Git极简入门

    Git极简入门 1 本地仓库 1 1工作流程 git本地操作的三个区域 Git Repository Git仓库 最终确定的文件保存到仓库 成为一个新的版本 并且对他人可见 暂存区 暂存已经修改的文件最后统一提交到git仓库中 工作区 Wo
  • Linux安装配置NFS服务器

    目录 NFS简介 安装NFS服务 网络环境配置 开发板挂载NFS 常见问题 NFS简介 NFS network file system 即网络文件系统 能使使用者访问网络上别处的文件就像在使用自己的计算机一样 我们可以在 Ubuntu 上制
  • 微信小程序报错“getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.js...“

    解决微信小程序获取定位报错 上个礼拜在调试一个微信小程序的时候 在手机允许小程序获取定位 定位授权成功的情况下 发现安卓手机能获取定位 但是苹果手机获取不到定位 我就开始查阅资料 一 报错信息 报错信息是errMsg getLocation
  • 在外包做了3年测试,离职后却成功入职字节跳动.....

    最近换了份工作 当时和群里的朋友也聊过换工作的话题 他们都觉得这是一次非常冒险的行为 说我这是一次豪赌 成了会有更好的职业发展 没成可能就会出现两三年的发展断层 甚至影响职业生涯路径 一步错 步步错 我当时也仔细的考虑过了 的确有很大的风险
  • JAVA基础知识之文件读取详细解读

    欢迎访问个人博客 德鲁大叔撸代码 我们要把一个文件从外部读入程序中 大致的步骤如下 第一步 获取需要被读取的文件 第二步 构造一个字节输入流 用来读取文件 第三步 为了提高读写速度 需要把字节流转换成一个字符输入流 第四步 写文件 所以我们
  • python英文文本情感分析_sentimentpy模块进行中文文本情感分类

    sentimentpy是我根据R语言的一个文本情感分析包sentiment进行开发的 开发的初衷有 R的sentiment已经被弃坑 没人维护 Python比R更擅长文本处理 sentiment包不支持中文 而sentimentpy包有如下
  • Vite 配置 Eslint 规范代码

    在经历过比较大型的项目协同开发后 代码规范成为了团队协同开发的棘手问题 今天 准备从头整理一份从编辑器 gt 代码编写过程中的规范总结 一 代码风格统一 这里推荐使用 EditorConfig 配置 来规范不同的编辑器 不同的编辑器配置 所