学不动系列-eslint

ESLint

介绍在最简单的项目使用eslint,包括eslint的vscode插件的使用,自动化格式代码,自动化修复代码,和webpack,vite的配合使用

单独使用

第一步:构建一个空项目

  • npm init -y
  • 在根目录新建文件./src/app.js,用于测试eslint是否生效
console.log('Hello World')

eslint是用来扫描我们所写的代码是否符合规范的工具。严格意义上来说, eslint配置跟webpack无关,但在工程化开发环境中,它往往是不可或缺的。

第二步:通过pnpm安装eslint依赖

pnpm i eslint -D

第三步:初始化eslint

只需要在根目录下添加一个.eslintrc文件(或者.eslintrc.json,.js等)。当然,我们可以使用eslint工具来自动生成它:

npx eslint --init

在这里插入图片描述
通过上面的选项,根目录下自动生成了配置文件.eslintrc.js

//.eslintrc.js
module.exports = {env: {browser: true,es2021: true,},extends: 'airbnb-base',overrides: [{env: {node: true,},files: ['.eslintrc.{js,cjs}',],parserOptions: {sourceType: 'script',},},],parserOptions: {ecmaVersion: 'latest',sourceType: 'module',},rules: {},
};

并生成了一个配置文件(.eslintrc.js),这样我们就完成了eslint的基本规则配置。eslint配置文件里的配置项含义如下:

  1. env:指定脚本的运行环境。每种环境都有一组特定的预定义全局变量。此处使用的 browser预定义了浏览器
    环境中的全局变量,es6启用除了modules 以外的所有ECMAScript 6特性(该选项会自动设置ecmaVersion解析器选项为6)。

  2. globals:脚本在执行期间访问的额外的全局变量。也就是env环境中中未预定义,但我们又需要使用的全局变量

  3. extends:扩展,检测中使用的预定义的规则集合。

  4. rules: 启用的规则及其各自的错误级别,会合并extends中的同名规则,定义冲突时优先级更高。

  5. parserOotions:ESLint允许你指定你想要支持的JavaScript 语言选项。

    ecmaFeatures 是个对象,表示你想使用的额外的语言特性,这里 jsx代表启用JSX

    ecmaVersion用来指定支持的ECMAScript版本。默认为5,即仅支持es5,你可以使用6、7、8、9或10来指定你想要使用的ECMAScript 版本。你也可以用使用年份命名的版本号指定为2015(同6) ,2016(同7),或2017(同8)或2018(同9)或2019(same as 10)。上面的env中启用了es6,自动设置了ecmaVersion解析器选项为6。

    plugins:是一个npm包,通常输出eslint 内部未定义的规则实现。rules和extends中定义的规则,并不都在eslint内部中有实现。比如 extends中的plugin:react/recommended,其中定义了规则开关和等级,但是这些规则如何生效的逻辑是在其对应的件‘react’中实现的。

检查文件是否有错误

npx eslint ./src

在这里插入图片描述

可以看到上图所示:出现了3个问题

  1. console没有定义
  2. error 没有在结尾新建一行
  3. error 缺少分号

解决问题一:

  • 在配置文件.eslintrc.js的rules中配置 "no-console":0//0表示关闭
  • 再次通过npm的npx工具去执行eslint命令检查文件app.js
npx eslint ./src

在这里插入图片描述
其他的也是类似的解决二方法,这样每次修复问题都需要执行npx eslint ./src命令,不符合程序员懒的本质,所以可以安装vscode的eslint插件。

第四步:安装vscode的eslint插件

方便在编码过程中及时发现代码问题
在这里插入图片描述
安装完eslint插件后,需要在根目录下新建.vscode文件夹,新建文件settings.json,内容如下

{"eslint.enable": true//开启eslint检测
}

保存后,发现eslint插件检测代码生效
在这里插入图片描述

配合vite

TODO

配合webpack

==TODO ==

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

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

相关文章

[spark] RDD 编程指南(翻译)

Overview 从高层次来看,每个 Spark 应用程序都包含一个driver program,该程序运行用户的main方法并在集群上执行各种并行操作。 Spark 提供的主要抽象是 resilient distributed dataset(RDD),它是跨集群节点分区的元素集合&…

SpringBoot之Session新增、删除、获取配置与使用

SpringBoot之Session新增、删除、获取配置与使用 文章目录 SpringBoot之Session新增、删除、获取配置与使用1. SpringBoot版本2. 定义增删查Session的类3. 定义Session的监听器4. 使用 自定义根据sessionId进行session的新增、删除、获取操作 1. SpringBoot版本 <parent>…

详解单例模式(Java语言实现)

1. 概念 保证类只有一个实例&#xff0c;让类自身负责保存它的唯一实例&#xff0c;并且类提供一个访问该实例的方法。 2. 单线程下的单例模式 public class Singleton {private static Singleton instance;private Singleton(){} //private构造方法&#xff0c;其他类无…

XGB-14:DMatrix的文本输入格式

简要描述XGBoost的文本输入格式。然而&#xff0c;对于具有支持的语言环境&#xff08;如Python或R&#xff09;的用户&#xff0c;建议使用该生态系统中的数据解析器。例如&#xff0c;可以使用sklearn.datasets.load_svmlight_file()。 基本输入格式 XGBoost目前支持两种文…

生成对抗网络

生成对抗网络 GAN 什么是GAN GAN含义&#xff1a;生成对抗网络&#xff08;Generative Adversarial Networks&#xff09;&#xff0c;主要做目标判别&#xff0c;应用在图像分类、语义分割、目标检测。 GAN简述&#xff1a;GAN包括生成器Generator(G)、判别模型Discriminat…

【架构之路】糟糕程序员的20个坏习惯,切记要改掉

文章目录 强烈推荐前言&#xff1a;坏习惯:总结&#xff1a;强烈推荐专栏集锦写在最后 强烈推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站:人工智能 前言&#xff1a; 优秀的程序员…

关于电脑一天24小时多少度电电脑的一天用电量计算

随着这几年物价的上涨&#xff0c;一些地区的电价越来越高&#xff0c;而我们经常需要使用电脑&#xff0c;那么一台电脑一天24小时用多少度电呢&#xff1f; 如何计算电脑一天的用电量&#xff1f; 让我们跟随小编来了解更多吧。 1、功耗、主机箱功耗 现在的计算机中&#xf…

DTD、XML阐述、XML的两种文档类型约束和DTD的使用

目录 ​编辑 一、DTD 什么是DTD&#xff1f; 为什么要使用 DTD&#xff1f; 内部 DTD 声明 具有内部 DTD 的 XML 文档 外部 DTD 声明 引用外部 DTD 的 XML 文档 二、XML 什么是XML&#xff1f; XML 不执行任何操作 XML 和 HTML 之间的区别 XML 不使用预定义的标记…

js 面试 什么是WebSockets?HTTP和HTTPS有什么不同?web worker是什么?

概念&#xff1a; webSocket 是一种在客户端和服务端之间建立持久连接的协议&#xff0c;它提供全双工通信通道&#xff0c;是服务器可以主动向客户端推送数据&#xff0c;同时也可以接受客户端发送的数据。 1 webSocket与https区别&#xff1f; 在网络通信中&#xff0c;We…

vue-waterfall2 瀑布流,触底加载更多

监听滚动到底部事件&#xff1a; function isScrollToBottom() {const scrollTop document.documentElement.scrollTop || document.body.scrollTop;const scrollHeight document.documentElement.scrollHeight || document.body.scrollHeight;const clientHeight document…

SVN教程-SVN的基本使用

SVN&#xff08;Apache Subversion&#xff09;是一款强大的集中式版本控制系统&#xff0c;它在软件开发项目中扮演着至关重要的角色&#xff0c;用于有效地跟踪、记录和管理代码的演变过程。与分布式系统相比&#xff0c;SVN 的集中式架构使得团队能够更加协同地进行开发&…

如何进行写作的刻意练习

写作从来不可能一蹴而就&#xff0c;而是一件需要我们持续坚持、努力的事情。 人如果没有目标就会迷失方向&#xff0c; 既然需要长期的坚持&#xff0c;就需要我们根据自身情况制定每一阶段的目标。 目标的制定要清晰可达&#xff0c;不能模棱两可&#xff0c;要认证对待。 …

基于springboot+vue的二手手机管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【Vue】插槽-slot

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 插槽 作用&#xff1a;让组件内部一些 结构 支持 自定义 插槽的分类&#xff1a; 默认插槽。具名插槽。 基础语法 组件内需要定制的结构部分&…

WEB漏洞 逻辑越权之支付数据篡改安全

水平越权 概述&#xff1a;攻击者尝试访问与他拥有相同权限的用户的资源 测试方法&#xff1a;能否通过A用户操作影响到B用户 案例&#xff1a;pikachu-本地水平垂直越权演示-漏洞成因 1&#xff09;可以看到kobe很多的敏感信息 2&#xff09;burp抓包&#xff0c;更改user…

Codeforces Round 929 (Div. 3)(A,B,C,D,E,F,G)

这场没考什么算法&#xff0c;比较水&#xff0c;难度也不是很高。比赛链接 硬要说的话E有个 前缀和 加 二分&#xff0c;F是数学BFS&#xff0c;G是个构造 A. Turtle Puzzle: Rearrange and Negate 题意&#xff1a; 给你一个由 n n n 个整数组成的数组 a a a 。您必须对…

Unix Domain Socket 比 localhost(127.0.0.1)更快

当本机的进程间通讯时&#xff0c;使用localhost&#xff08;127.0.0.1&#xff09;、本机IP 和 Unix Domain Socket 之间有什么区别以前理解比较模糊&#xff0c;今天看了一篇文章&#xff0c;终于高明白了&#xff0c;就是这篇文章&#xff0c;写的非常好&#xff1a; (65 封…

【ERROR-pip-ubuntu】error: can‘t find Rust compiler

这个错误的关键信息是&#xff1a; error: cant find Rust compiler这表示无法找到 Rust 编译器。 针对这个问题&#xff0c;你可以尝试以下解决方法之一&#xff1a; **安装 Rust 编译器&#xff1a;**根据提示&#xff0c;你可以尝试安装 Rust 编译器。你可以从 Rust 官网&…

vscode安装配置

一、通过Code-Server安装 1.1、脚本安装 curl -fsSL https://code-server.dev/install.sh | sh#!/bin/sh set -eu# code-servers automatic install script. # See https://coder.com/docs/code-server/latest/installusage() {arg0"$0"if [ "$0" sh ];…

uniapp+node.js前后端做帖子模块:获取帖子列表(社区管理平台的小程序)

目录 0前提1.一些准备1.1表帖子表 post帖子评论表 postComment帖子点赞表 postLike 1.2总体思路 2.前端3.后端 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01; ✏️ 评论&#xff0c;你的意见是…