工程化-vue3+ts:代码检测工具 ESLint

news2024/12/26 10:25:12

一、理解ESLint

ESLint是一个开源的JavaScript代码检查工具,用于帮助开发人员规范和统一编码风格。它可以检查代码中的潜在错误、不一致的编码习惯以及一些常见的代码问题。

ESLint使用基于规则的插件体系,可以根据项目的需求和个人的偏好配置不同的规则集。每个规则都有一个错误级别,可以设置为警告或错误,开发者可以根据自己的需求自定义配置。

ESLint可以在命令行工具中运行,也可以集成到开发环境中的编辑器或者构建工具中。通过在代码保存或者提交之前自动运行ESLint,可以确保代码的质量和一致性。

ESLint可以检查常见的错误,如未声明的变量、不必要的分号、重复的函数参数等。它还可以检查代码风格问题,如缩进、引号、空格等。此外,ESLint还支持一些特定的规则,如强制使用严格模式、禁止使用特定的语法等。

ESLint的灵活性和可扩展性使得它成为开发人员常用的代码检查工具之一。它可以帮助开发人员提高代码质量,减少潜在的bug,并且可以根据项目的需求轻松地定制规则集。

二、ESLint能做什么

ESLint 是一个功能强大的 JavaScript 代码检查工具,它可以帮助开发人员在编码过程中发现潜在的错误和不符合代码风格规范的问题。以下是 ESLint 能够做的一些主要事情:

静态代码分析:ESLint 能够在代码运行时之前进行静态分析,找出潜在的错误和不符合编码规范的地方。

代码风格检查:ESLint 可以根据配置的文件(如 .eslintrc.js)来检查代码是否符合团队或项目的编码风格规范。例如,它可以检查是否使用了分号结尾、是否使用了一致的引号风格、变量命名是否规范等。

插件支持:ESLint 提供了丰富的插件生态系统,可以通过安装插件来扩展 ESLint 的功能,比如支持新的 JavaScript 语法特性、集成其他语言(如 TypeScript、JSX 等)的检查、添加自定义规则等。

自动修复:ESLint 不仅可以指出问题,还可以尝试自动修复某些类型的错误。这可以大大节省开发人员的时间,提高编码效率。

与编辑器和 IDE 集成:ESLint 可以与许多流行的编辑器和集成开发环境(IDE)无缝集成,如 Visual Studio Code、WebStorm、Atom 等。这些集成通常会在你编写代码时实时显示警告和错误,甚至提供快速修复建议。

自定义规则:除了使用现有的规则外,你还可以根据自己的需求创建自定义规则。这对于满足特定项目或团队的编码约定非常有用。

与持续集成/持续部署(CI/CD)集成:ESLint 可以集成到 CI/CD 流程中,作为代码提交或合并到主分支之前的检查步骤。这可以确保代码库始终保持一致的代码风格和质量。

配置灵活:ESLint 的配置非常灵活,可以根据项目的需求进行微调。你可以在项目中包含 .eslintrc.js 文件来定义规则、插件、环境等配置信息。

通过使用 ESLint,开发团队可以确保代码质量的一致性,减少因编码风格不一致而导致的合并冲突和审查延迟,同时提高代码的可读性和可维护性。

三、ESLint安装使用

3.1、实现目标 vue3 + ts + pnpm 项目,配合git husky + gitHooks 使用ESLint

vue3+ts:约定式提交(git husky + gitHooks)_error invalid commit message format. proper commit-CSDN博客

3.2、安装ESLint

pnpm install -D @eslint/create-config

3.3、初始化ESLint配置

npx eslint --init

3.4、eslint.config.js

3.5、查看不规范的文件

npx eslint src

3.6、package.json

"scripts": {
    "eslint:fix": "eslint --fix"
}

3.7、pnpm run eslint:fix测试

四、过程记录

记录一、NUXT2项目Expected to return a value at the end of arrow function eslint

我们不希望“箭头函数没有返回语句”的检查,希望 ESLint 不对箭头函数末尾缺少返回值发出警告或错误,您可以在 .eslintrc.js 文件的 rules 部分为相应的规则设置 'off' 值。通常,这个规则是 'consistent-return' 规则,该规则要求函数始终返回相同的值类型。但是,如果您只是希望箭头函数在不需要返回值的情况下不返回任何东西而不引发警告,您应该确保没有配置任何规则强制要求函数必须有返回值。

如果您已经确定是哪个规则导致了这个错误或警告,您可以在 .eslintrc.js 中这样关闭它:

module.exports = {
  // ... 其他的 ESLint 配置 ...

  rules: {
    // ... 其他的规则配置 ...

    // 关闭 'consistent-return' 规则
    'consistent-return': 'off',

    // 如果是因为 'no-unused-expressions' 规则导致(例如,因为箭头函数没有返回语句),则关闭它
    'no-unused-expressions': 'off',

    // 如果您使用的是自定义规则或插件提供的规则,请确保您知道规则的准确名称,并将其设置为 'off'
    'your-custom-or-plugin-rule': 'off',
  },
};

测试成功,没有提示了。

记录二、NUXT2项目Assignment to property of function parameter 'el'

module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: ['plugin:vue/recommended', 'airbnb-base', 'prettier'],
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module',
  },
  plugins: ['vue'],
  rules: {
    'vue/eqeqeq': 'error',
    'import/no-unresolved': 0,
    'consistent-return': 'off',
    'no-unused-expressions': 'off',
    'no-param-reassign': 'off',
  },
};

不再提示

记录三、Vue3+TS项目使用ESLint还是使用TSLint

在Vue 3与TypeScript(TS)结合的项目中,推荐使用ESLint而非TSLint。这里有几个主要原因:

1、TSLint已被弃用:自2019年以来,TSLint的官方团队就宣布了TSLint的弃用计划,并建议所有用户迁移到ESLint。ESLint现在提供了对TypeScript的完整支持,这意呀着你可以使用一套工具来同时检查JavaScript和TypeScript代码。

2、社区和生态:由于ESLint现在支持TypeScript,并且ESLint社区非常活跃,因此你可以获得更多的插件、预设配置和更新支持。这对于保持代码质量和一致性至关重要。

3、集成和兼容性:许多现代开发工具和框架(如Vue CLI、Create React App等)都内置了对ESLint的支持。Vue CLI 3及以上版本默认使用ESLint进行代码质量检查,这使得在Vue 3+TS项目中集成ESLint变得非常容易。

4、性能:ESLint的TypeScript支持已经非常成熟,并且在性能上进行了优化。这意呀着你可以快速地对大型代码库进行静态代码分析,而不会遇到明显的性能瓶颈。

5、可配置性:ESLint提供了高度可配置性,允许你根据项目的具体需求定制规则集。你可以轻松地启用或禁用特定的规则,甚至编写自定义规则来满足特定的编码标准。

五、欢迎交流指正

六、参考链接

Vue3+TS项目,eslint、prettier安装配置_vue3 ts 安装eslint-CSDN博客

Command Line Interface Reference - ESLint - Pluggable JavaScript Linter

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

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

相关文章

数学系C++ 类与对象 STL(九)

目录 目录 面向对象:py,c艹,Java都是,但c是面向过程 特征: 对象 内敛成员函数【是啥】: 构造函数和析构函数 构造函数 复制构造函数/拷贝构造函数: 【……】 实参与形参的传递方式:值…

git杂记

git 安装: 在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win,下载会自动开始。 要注意这是一个名为 Git for Windows 的项目(也叫做 msysGit),和…

如何优化 PostgreSQL 中对于树形结构数据的查询?

文章目录 一、数据模型选择(一)邻接表模型(二)路径枚举模型(三)嵌套集模型 二、索引策略(一)对于邻接表模型(二)对于路径枚举模型(三)…

基于pi控制的数字锁相环simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…

ARM架构以及程序运行解析

文章目录 1. ARM架构 2. ARM处理器程序运行的过程 3. 示例 3. 基于ARM架构的STM32单片机 1. 运行模式 2. 寄存器组 3. STM32的基本结构 4. STM32的运行模式 4. 寄存器组详解 1. 未备份寄存器 2. 备份寄存器 3. 程序计数器 4. 程序状态寄存器 5. CPSR和SPSR寄存器…

【TB作品】51单片机 Proteus仿真 00001仿真实物PID电机调速系统

实验报告:Proteus 仿真 PID 电机调速系统 一、实验背景 PID(比例-积分-微分)控制器广泛应用于工业控制系统中,用于调节各种物理变量。本实验的目的是通过 Proteus 仿真软件设计并实现一个 PID 电机调速系统,以控制直…

记一次酣畅淋漓的UDF提权(Linux)

外网打点就不放了,翻了一下具备suid权限的命令,没啥结果。 可疑的命令是/usr/lib/dbus-1.0/dbus-daemon-launch-helper但是没有找到用这个命令提权的资料。 弹shell后翻找一下源码,/app/api.py文件中链接了mysql,事出反常必有妖&…

水冷液冷负载系统的六种基本类型

您可以选择六种基本类型的冷却系统,以满足负载的冷却需求。每个人都有其优点和缺点。本文旨在识别不同类型的冷却系统并确定它们的优缺点,以便您可以根据自己的需求做出明智的选择。 液体冷却系统有六种基本类型: 1.液对液 2.闭环干燥系统…

【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising

论文:2406.06911 (arxiv.org) 代码:czg1225/AsyncDiff: Official implementation of "AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising" (github.com) 简介 异步去噪并行化扩散模型。提出了一种新的扩散模型分布式加…

J024_打印电影的全部信息

一、需求描述 展示多部电影的信息。 电影信息包括:电影名称、电影得分、电影票价格。 二、代码实现 2.1 Movie类 package com.itheima.collection;public class Movie {//电影名称private String name;//电影得分private int score;//电影票价格private double…

前端面试题(CSS篇五)

一、设备像素、css 像素、设备独立像素、dpr、ppi 之间的区别? 设备像素指的是物理像素,一般手机的分辨率指的就是设备像素,一个设备的设备像素是不可变的。 css像素和设备独立像素是等价的,不管在何种分辨率的设备上,…

LLaMA2模型开源商用:实力比肩ChatGPT,探索AI新高度

【大模型】可商用且更强的 LLaMA2 来了 LLaMA2 简介 论文 GitHubhuggingface模型列表训练数据训练信息模型信息 许可证参考 LLaMA2 简介 2023年7月19日:Meta 发布开源可商用模型 Llama 2。 Llama 2是一个预训练和微调的生成文本模型的集合,其规模从…

java中反射(Reflection)的4个作用

java中反射(Reflection)的4个作用 作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断任意一个类所具有的成员变量和方法作用4、在运行时调用任意一个对象的方法总结 💖The Begin💖…

shared_ptr 线程安全

为什么 shared_ptr 可以安全地在多个线程中共享? 循环引用 因为shared_ptr std::shared_ptr 的引用计数是线程安全的。这意味着你可以在多个线程中安全地拷贝、赋值和销毁 std::shared_ptr。然而,访问或修改 shared_ptr 所指向的对象时,需要…

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢? 一、小试牛刀 ① 新建一个Spr…

聊聊数据库变更管控的白屏化

在前文中介绍了当涉及到数据库相关的变更如数据更新或者误删表等误操作时,通过延迟库或者闪回等功能来恢复业务,这些已经属于事后的故障处理了。当故障发生后,所要面临的是故障影响的不可控,所面临的损失也是不可预估的。就像最近…

【Excel】求和带文字的数据

目录标题 1. 给出样例2. CtrlE3. CtrlH → A替换为 → 全部替换 1. 给出样例 2. CtrlE 3. CtrlH → A替换为 → 全部替换

从零开始的python学习生活

pycharm部分好用快捷键 变量名的定义 与之前学习过的语言有所不同的是,python中变量名的定义更加的简洁 such as 整形。浮点型和字符串的定义 money50 haha13.14 gaga"hello"字符串的定义依然是需要加上引号,也不需要写;了 字符…

重温express

前言 很久之前囫囵吞枣的学过一点node,最近决定用nodevue写个博客项目,所以重新学习了express的相关内容。 初始搭建 创建项目 npm init给项目命名创建项目终端进入项目,安装express依赖,npm i expressjs文件中引入express使用…

「C++系列」C++ 常量知识点-细致讲解

文章目录 一、C 常量定义1. 使用#define预处理指令2. 使用const关键字3. 局部常量4. 全局常量5. 指针常量6. 枚举(Enumerations)7. constexpr(C11及以后) 二、C 整数常量1. 十进制整数常量2. 八进制整数常量3. 十六进制整数常量4.…