Vue3 + JS项目配置ESLint Pretter

news2024/11/13 13:46:25

前言

如果在开发大型项目  同时为多人协作开发  那么 ESLint 在项目中极为重要  在使用 ESLint 的同时 也需要使用 Pretter插件 统一对代码进行格式化 二者相辅相成 缺一不可

1. 安装 VsCode 插件

在 VsCode 插件市场搜索安装 ESLint 和 Pretter

2. 安装依赖

这里直接在 package.json 内写入   之后使用 npm 等包管理器直接 install 安装即可

 "devDependencies": {
    "@vue/eslint-config-prettier": "^9.0.0",
    "eslint": "^8.57.0",
    "eslint-plugin-import": "^2.29.1",
    "eslint-plugin-prettier": "^5.2.1",
    "eslint-plugin-simple-import-sort": "^12.1.1",
    "eslint-plugin-vue": "^9.23.0",
    "eslint-plugin-vue-scoped-css": "^2.8.1",
    "prettier": "^3.2.5",
    "vite-plugin-eslint": "^1.8.1",
  }

以上依赖包具体作用如下  感兴趣可以了解:

@vue/eslint-config-prettier

这是一个 ESLint 配置,专为 Vue 项目整合 Prettier 格式化而设计,确保 ESLint 规则不会与 Prettier 的格式化规则发生冲突。

eslint

ESLint 的核心库,用于识别和报告 JavaScript 代码中的模式匹配,帮助维护代码质量和风格一致性。

eslint-plugin-import

提供了一系列规则,用于检查 ES6+ 的 import/export 语法,帮助管理模块的导入和避免文件路径错误、拼写错误等问题。

eslint-plugin-prettier

将 Prettier 作为 ESLint 规则运行,可以在使用 ESLint 的同时应用 Prettier 的代码格式化功能。

eslint-plugin-simple-import-sort

用于自动排序 import 语句,以保持代码的整洁和一致性,减少合并时的冲突。

eslint-plugin-vue

官方 Vue.js 的 ESLint 插件,提供了适用于 Vue 文件的 ESLint 规则,帮助维护 .vue 文件中的 JavaScript 和模板代码的质量。

prettier

一个流行的代码格式化工具,用于自动格式化代码,使其符合一致的风格。

vite-plugin-eslint

用于将 ESLint 集成到 Vite 构建流程中,使得在使用 Vite 开发 Vue 项目时,可以实时进行代码质量检查。

 

eslint-plugin-vue-scoped-css

这个插件专门用于检查Vue单文件组件中的scoped CSS,确保样式的作用域正确无误。

3. 配置 VsCode 规则

1. 在项目根目录创建 .vscode 文件夹

如果你的项目使用 VsCode 打开 那这个文件夹应该是自动生成的

2. 创建规则文件

在 .vscode 文件夹里创建 extensions.json 和 settings.json

此时 您的文件结构理应如此

3. 编辑规则文件

extensions.json

主要作为实时检查和修正代码问题使用

需配合 VsCode 中 ESLint 扩展和 .eslintrc 配置文件使用

{
  "recommendations": ["dbaeumer.vscode-eslint"]
}

settings.json

主要作为对指定文件进行格式化 从而符合预定标准

{
  "editor.formatOnType": true, // 控制编辑器在键入一行后是否自动格式化该行
  "editor.formatOnSave": true, // 在保存时格式化文档
  "eslint.codeAction.showDocumentation": {
    "enable": true // 显示相关规则的文档链接
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit" // 保存文件时 应用所有 ESLint 的自动修复
  },
  "files.eol": "\n", // 设置文件的结束行字符为 Unix 风格的换行符
  "editor.tabSize": 2, // 设置制表符大小为2个空格
  "eslint.format.enable": true, // 这允许 ESLint 作为格式化工具
  "eslint.validate": ["javascript", "javascriptreact", "vue"],
  "[vue]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  "[javascriptreact]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  },
  "[javascript]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  }
}

4. 配置ESLint

在项目根目录创建 .eslintrc

.eslintrc

代码最后注释掉的 overrides 数组为对 Vue 组件及命名规范

建议打开并使用

{
  "root": true,
  "extends": [
    "plugin:vue/vue3-recommended",
    "plugin:vue-scoped-css/base",
    "plugin:prettier/recommended",
    "plugin:vue/vue3-essential",
    "eslint:recommended",
    "@vue/eslint-config-prettier/skip-formatting"
  ],
  "env": {
    "browser": true, // 浏览器全局变量
    "node": true, // Node.js全局变量和作用域
    "jest": true, // Jest全局变量
    "es6": true // 启用ES6的特性
  },
  "globals": {
    "defineProps": "readonly", // 将defineProps定义为全局只读
    "defineEmits": "readonly" // 将defineEmits定义为全局只读
  },
  "plugins": [
    "vue", // 使用Vue插件
    "simple-import-sort" // 使用simple-import-sort插件进行导入排序
  ],
  "parserOptions": {
    "sourceType": "module", // 指定来源的类型,是模块
    "ecmaFeatures": {
      "jsx": true // 启用JSX
    }
  },
  "settings": {
    "import/extensions": [".js", ".jsx"] // 为导入语句指定文件扩展名
  },
  "rules": {
    "no-console": "off", // 关闭禁止console规则
    "no-continue": "off", // 关闭禁止continue语句规则
    "no-restricted-syntax": "off", // 关闭限制特定语法规则
    "no-plusplus": "off", // 允许使用++操作符
    "no-param-reassign": "off", // 关闭禁止对函数参数重新赋值规则
    "no-shadow": "off", // 关闭变量声明覆盖外层作用域变量规则
    "guard-for-in": "off", // 关闭需要在for-in循环中有if语句的规则
    "import/extensions": "off", // 关闭导入文件需包含文件后缀规则
    "import/no-unresolved": "off", // 关闭导入路径错误检查
    "import/no-extraneous-dependencies": "off", // 关闭禁止未列在package.json的依赖导入规则
    "import/prefer-default-export": "off", // 关闭优先使用默认导出的规则
    "import/first": "off", // 关闭所有导入语句之前不能有执行代码规则
    "no-unused-vars": [
      "error", // 启用未使用变量错误提示
      {
        "argsIgnorePattern": "^_", // 忽略以下划线开头的参数
        "varsIgnorePattern": "^_" // 忽略以下划线开头的变量
      }
    ],
    "no-use-before-define": "off", // 关闭禁止在声明之前使用变量或函数规则
    "class-methods-use-this": "off", // 关闭类方法必须使用this规则
    "simple-import-sort/imports": "error", // 对导入语句进行排序
    "simple-import-sort/exports": "error" // 对导出语句进行排序
  }
  // "overrides": [
  //   {
  //     "files": ["*.vue"],
  //     "rules": {
  //       "vue/component-name-in-template-casing": [2, "kebab-case"], // 组件名必须是kebab-case
  //       "vue/require-default-prop": 0, // 关闭属性必须有默认值规则
  //       "vue/multi-word-component-names": 0, // 关闭组件名必须为多单词规则
  //       "vue/no-reserved-props": 0, // 关闭禁止使用保留字作为组件属性规则
  //       "vue/no-v-html": 0, // 关闭禁止使用v-html指令规则
  //       "vue-scoped-css/enforce-style-type": ["error", { "allows": ["scoped"] }] // 强制使用scoped样式
  //     }
  //   }
  // ]
}

5. 配置 Prettier

在项目根目录创建 .prettierrc.js

.prettierrc.js

export default {
  // 一行最多 120 字符..
  printWidth: 120,
  // 使用 2 个空格缩进
  tabWidth: 2,
  // 不使用缩进符,而使用空格
  useTabs: false,
  // 行尾需要有分号
  semi: true,
  // 使用单引号
  singleQuote: true,
  // 对象的 key 仅在必要时用引号
  quoteProps: 'as-needed',
  // jsx 不使用单引号,而使用双引号
  jsxSingleQuote: false,
  // 末尾需要有逗号
  trailingComma: 'all',
  // 大括号内的首尾需要空格
  bracketSpacing: true,
  // jsx 标签的反尖括号需要换行
  jsxBracketSameLine: false,
  // 箭头函数,只有一个参数的时候,也需要括号
  arrowParens: 'always',
  // 每个文件格式化的范围是文件的全部内容
  rangeStart: 0,
  rangeEnd: Infinity,
  // 不需要写文件开头的 @prettier
  requirePragma: false,
  // 不需要自动在文件开头插入 @prettier
  insertPragma: false,
  // 使用默认的折行标准
  proseWrap: 'preserve',
  // 根据显示样式决定 html 要不要折行
  htmlWhitespaceSensitivity: 'css',
  // vue 文件中的 script 和 style 内不用缩进
  vueIndentScriptAndStyle: false,
  // 换行符使用 lf
  endOfLine: 'lf',
};

至此 所有配置结束

但需要注意的是 此时您的项目可能会各种红线

执行如下命令即可对所有文件执行格式化操作

npm run lint --fix

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

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

相关文章

SOLIDWORKS教育版支持多种快捷键和自定义工具

在工程设计与教育的广阔领域中,SOLIDWORKS作为一款强大的三维CAD设计软件,凭借其直观的操作界面、丰富的功能集以及对学生及教育机构的特别支持,赢得了广泛的认可与好评。其中,SOLIDWORKS教育版不仅继承了专业版的核心功能&#x…

Android Listview notifyDataSetChanged() 不起作用

private ArrayList<Map<String, String>> data new ArrayList<Map<String, String>>(); private ArrayList<Map<String, String>> delivered_data new ArrayList<Map<String, String>>(); 如果直接将arraylist 的数据直接…

人工智能深度学习系列—深度学习损失函数中的Focal Loss解析

文章目录 1. 背景介绍2. Loss计算公式3. 使用场景4. 代码样例5. 总结 1. 背景介绍 在深度学习的目标检测任务中&#xff0c;类别不平衡问题一直是提升模型性能的拦路虎。Focal Loss损失函数应运而生&#xff0c;专为解决这一难题设计。本文将深入探讨Focal Loss的背景、计算方…

面向对象之设计模式,四种内部类,类关系

面向对象 1. 类关系 继承 使用extends表示,类和类单继承,接口和接口多继承,多个逗号隔开 又叫泛化关系 实现 类和接口是多实现关系,多个逗号隔开,通过关键字 implements表示 依赖 一个类中的局部变量 ,保存了另一个类对象 关联 又叫强依赖,一个类中的成员变量,是另一个类对象…

用Babylon.js 滑动屏幕画图形,签字等

介绍 在上篇文章中我们已经了解到了该游戏引擎的基本搭建过程。比如灯光,摄像头,场景、事件监听等。这里我就不做多介绍。运用以上知识点。我们此时做一个小游戏画图。 效果图 源代码 1.先监听事件是否碰撞到了画板 2.然后判断动作,手指按住屏幕,松开屏幕,滑动屏幕。 …

Linux---进程(4)---进程优先级调度切换

目录 进程优先级 进程切换 前期知识补充 进程切换 进程调度 进程优先级 权限是为了解决能不能享受资源的问题&#xff0c;优先级则是为了解决享受资源的顺序的问题。 进程要访问某种资源&#xff0c;就需要用排队的方式&#xff0c;确定享受资源的先后顺序。因为资源是少…

谷粒商城实战笔记-105~107-全文检索-ElasticSearch-入门

文章目录 一&#xff0c;105-全文检索-ElasticSearch-入门-_cat二&#xff0c;106-全文检索-ElasticSearch-入门-put&post新增数据三&#xff0c;107-全文检索-ElasticSearch-入门-get查询数据&乐观锁字段1&#xff0c;过时的乐观锁-version2&#xff0c;Elasticsearch…

深入源码P3C-PMD:启动源码(2)

下面我们开始从启动探寻 PMD 的源码设计。 pmd 的启动类为 PmdCli&#xff0c;作为命令行的启动器&#xff0c; 其依赖 picocli 作为控制台命令框架。 picocli 官网&#xff1a;https://picocli.info/ Command(name "checksum", mixinStandardHelpOptions true, v…

Golang | Leetcode Golang题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; func removeDuplicateLetters(s string) string {left : [26]int{}for _, ch : range s {left[ch-a]}stack : []byte{}inStack : [26]bool{}for i : range s {ch : s[i]if !inStack[ch-a] {for len(stack) > 0 && ch < stack…

谷歌外链的重要性及获取方法!

对于做谷歌seo的人来说&#xff0c;谷歌外链的重要性不言而喻&#xff0c;这是谷歌评估一个网站的重要指标&#xff0c;它们像是网络上的推荐信&#xff0c;可以显著提高你网站的可见度和信誉&#xff0c;这样有利于关键词获取到更好的排名&#xff0c;有作用的外链能显著提升网…

CDO学习

1.备份instie.mdb文件 2.

MySQL:数据类型表的基础操作

目录 1、数据类型 1.1 数值类型 1.2 字符串类型 1.3 日期类型 2、表的基础操作 2.1 选择数据库 2.2 建表 2.3 查看库中所有表 2.4 查看某一表结构 2.5 删表 3、可视化编辑工具 3.1 运行 1、数据类型 1.1 数值类型 bit类型可指定长度&#xff08;如果不写&#xff0c;…

pytorch学习笔记4 tensor变换

View/reshape viewreshape, 新版本 要保证数据总量不变&#xff0c;否则报错Squeeze/unsqueeze 减少维度和增加维度 unsqueeze(n): 如果n是正&#xff0c;在第n位前面插1维&#xff08;size1&#xff09;&#xff0c; 如果n是负&#xff0c;在倒数第|n|位后面插入1维&#xf…

MySQL数据的增删改查 where 条件查询 基础知识 【3】推荐

操作数据是数据库很重要的一部分&#xff0c;今天整理了下关于MySQL数据库数据的增删改查&#xff0c;包括基础查询、where条件查询、排序、分页、聚合、分组、having以及多表查询&#xff0c;多表查询的直接查询、内连接、外连接以及子查询。方便自己以后查看&#xff0c;也欢…

基于stm32的RTC实时时钟 (HAL)

一&#xff1a;stm32的RTC功能概述 &#xff08;基于stm32f10x&#xff09; 1&#xff1a;绪论 实时时钟是一个独立的计时器&#xff0c;RTC提供一套持续运行的计数器&#xff0c;这些计数器可以配合适合的软件用来提供一个时钟日历功能。计数器的值可以被写入以设置系统当前时…

Linux中栈的大小的修改

目录 1. 使用ulimit命令 2. 修改系统级别的资源限制 3. 修改编译器选项 4. 修改内核参数&#xff08;不常用&#xff09; 5. 修改Makefile文件 检查当前栈大小 在Linux系统中&#xff0c;可以通过几种不同的方法来修改栈的大小。下面是几种常用的方法&#xff1a; 1. 使…

『 Linux 』POSIX 信号量与基于环形队列的生产者消费者模型

文章目录 信号量概念POSIX 信号量基于环形队列的生产者消费者模型基于环形队列的生产者消费者模型编码实现基于环形队列的生产者消费者模型发送任务测试 信号量概念 信号量是一种用于多线程或多进程间同步的机制; 其定义是一个整形变量,本质上信号量可以看成是一个计数器,用来描…

记录一次服务器被(crontab)木马入侵事件

背景&#xff1a;发现平时正常登录的服务器突然进不去&#xff0c;也没明显的错误&#xff0c;重启也登录不了&#xff01; 可能的原因&#xff0c;内存/CPU满了 重启通过用户模式进入&#xff0c;查看进程发现有个定时任务一直在自动创建并执行&#xff08;进程ID一直在变化&a…

机械学习—零基础学习日志(高数19——函数极限理解深化)

零基础为了学人工智能&#xff0c;真的开始复习高数 本次学习笔记&#xff0c;主要讲解函数极限的计算问题。 极限四则运算规则 这里有几个需要注意的地方。函数极限的四则运算&#xff0c;需要知道极限存在才能大胆放心的使用。而且使用超实数的概念会更好帮助我们理解&…

Python 操作PPT幻灯片- 添加、删除、或隐藏幻灯片

PowerPoint文档是商务、教育、创意等各领域常见的用于展示、教育和传达信息的格式。在制作PPT演示文稿时&#xff0c;灵活地操作幻灯片是提高演示效果、优化内容组织的关键步骤。下面将介绍如何使用国产Spire.Presentation for Python库实现添加、删除或隐藏PPT幻灯片。 目录 …