Eslint prettier airbnb规范 配置

1.安装vscode的Eslint和prettier 插件

eslint:代码质量检查工具

https://eslint.nodejs.cn/docs/latest/use/getting-started

prettier:代码风格格式化工具

https://www.prettier.cn/docs/index.html

/*
eslint-config-airbnb-base airbnb 规范
eslint-import-resolver-typescript 解决@别名识别问题 
eslint-plugin-import 如果是npm yarn需要安装
*/
pnpm i eslint-config-airbnb-base eslint-plugin-import eslint-import-resolver-typescript  -D

eslint-config-airbnb-base airbnb :airbnb代码质量规范

https://github.com/airbnb/javascript#events

eslint-import-resolver-typescript : 解决@别名识别问题

https://www.npmjs.com/package/eslint-import-resolver-typescript


2.根目录下新建eslint规则配置文件

.eslintrc.js 修改规则

/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')

module.exports = {
  root: true,
  extends: [
    'plugin:vue/vue3-essential',
    'eslint:recommended',
    'airbnb-base',
    '@vue/eslint-config-typescript',
    '@vue/eslint-config-prettier/skip-formatting'
    //  './.eslintrc-auto-import.json' 后面自动导入会用到
  ],
  parserOptions: {
    ecmaVersion: 'latest'
  },
  overrides: [
    {
      files: ['*.ts', '*.tsx', '*.vue'],
      rules: {
        // 解决 ts 全局类型定义后,eslint报错的问题
        'no-undef': 'off'
      }
    }
  ],
  settings: {
    'import/resolver': {
      typescript: {
        project: './tsconfig.*.json'
      }
    }
  },
  rules: {
    'import/no-extraneous-dependencies': 'off',
    // 对后缀的检测
    'import/extensions': [
      'error',
      'ignorePackages',
      { js: 'never', jsx: 'never', ts: 'never', tsx: 'never' }
    ],
    'import/order': [
      'error',
      {
        groups: [
          /* 
            builtin :内置模块,如 path,fs等 Node.js内置模块。
            external :外部模块,如 lodash ,react 等第三方库。
            internal :内部模块,如相对路径的模块、包名前缀为 @ 的模块。
            unknown :未知模块,如模块名没有指定扩展名或模块路径缺失扩展名。
            parent :父级目录的模块。
            sibling :同级目录的模块。
            index :当前目录的 index 文件。
            object :使用ES6 导入的模块。
            type :使用 import type 导入的模块。
          */
          ['builtin', 'external'],
          'internal',
          ['parent', 'sibling'],
          'index',
          'type',
          'object',
          'unknown'
        ],
        pathGroups: [
          {
            pattern: '../**',
            group: 'parent',
            position: 'after'
          },
          {
            pattern: './*.scss',
            group: 'sibling',
            position: 'after'
          }
        ],
        // 不同组之间是否换行。
        'newlines-between': 'always',
        // 根据字母顺序对每组内的引用进行排序。
        alphabetize: {
          order: 'asc',
          caseInsensitive: true
        }
      }
    ],
   
  }
}
  • 根目录新建忽略文件 .eslintignore
dist
node_modules
public
.husky
.vscode
.idea
*.sh
*.md

.eslintrc.cjs
.prettierrc.json
.stylelintrc.cjs

3.根目录下新建prettier配置文件

{
  "$schema": "https://json.schemastore.org/prettierrc",
  "semi": false,
  "tabWidth": 2,
  "singleQuote": true,
  "printWidth": 100,
  "trailingComma": "none"
}

段代码是Prettier代码格式化工具的配置文件的内容,通常存储为.prettierrc或prettier.config.js。Prettier是一个流行的代码格式化工具,用于确保代码的一致性和风格。下面是各个配置项的解释:

"$schema": 指向Prettier配置文件的JSON Schema定义。这个URL是Schema存储位置,它定义了哪些属性是有效的,以及各属性的数据类型等。这有助于支持JSON Schema的编辑器提供自动完成、类型校验等功能。

"semi": 设置为false表示在每条语句的末尾不自动添加分号。Prettier会根据这个配置来格式化代码,如果你更倾向于省略分号,这会是一个有用的配置。

"tabWidth": 设置代码的缩进宽度为2个空格。这个配置影响代码的可读性和布局,2是一个比较常见的选择,因为它既保持了代码的紧凑,也足够清晰。

"singleQuote": 设置为true表示使用单引号(')而不是双引号(")来包围字符串。这是代码风格的一个选择,不同的团队或项目可能有不同的偏好。

"printWidth": 设置一行代码的最大长度为100个字符。当代码长度超过这个阈值时,Prettier会尝试换行。这个配置有助于保持代码的可读性,尤其是在小屏幕或分屏编辑时。

"trailingComma": 设置为"none"表示在对象或数组最后一个元素后面不加逗号。这个配置项也是基于风格偏好的,一些人喜欢在最后一个元素后加上逗号(称为尾后逗号),因为这样在添加新元素时可以减少版本控制中的差异(只增加一行,而不是修改一行加一行)。

3.1两个prettier的配置例子,可根据个人需求更改

module.exports = {
  printWidth: 100, //单行长度
  tabWidth: 2, //缩进长度
  useTabs: false, //使用空格代替tab缩进
  semi: true, //句末使用分号
  singleQuote: true, //使用单引号
  quoteProps: 'as-needed', //仅在必需时为对象的key添加引号
  jsxSingleQuote: true, // jsx中使用单引号
  trailingComma: 'all', //多行时尽可能打印尾随逗号
  bracketSpacing: true, //在对象前后添加空格-eg: { foo: bar }
  jsxBracketSameLine: true, //多属性html标签的‘>’折行放置
  arrowParens: 'always', //单参数箭头函数参数周围使用圆括号-eg: (x) => x
  requirePragma: false, //无需顶部注释即可格式化
  insertPragma: false, //在已被preitter格式化的文件顶部加上标注
  proseWrap: 'preserve', //不知道怎么翻译
  htmlWhitespaceSensitivity: 'ignore', //对HTML全局空白不敏感
  vueIndentScriptAndStyle: false, //不对vue中的script及style标签缩进
  endOfLine: 'lf', //结束行形式
  embeddedLanguageFormatting: 'auto', //对引用代码进行格式化
};

module.exports = {
  printWidth: 200, //行宽
  semi: true, //分号
  singleQuote: true, // 使用单引号
  useTabs: false, //使用 tab 缩进
  tabWidth: 2, //缩进
  trailingComma: 'es5', //后置逗号,多行对象、数组在最后一行增加逗号
  arrowParens: 'avoid', //箭头函数只有一个参数的时候可以忽略括号
  bracketSpacing: true, //括号内部不要出现空格
  proseWrap: 'preserve', //换行方式 默认值。因为使用了一些折行敏感型的渲染器(如GitHub comment)而按照markdown文本样式进行折行
  parser: 'babylon', //格式化的解析器,默认是babylon
  endOfLine: 'auto', // 结尾是 \n \r \n\r auto
  jsxSingleQuote: false, // 在jsx中使用单引号代替双引号
  jsxBracketSameLine: false, //在jsx中把'>' 是否单独放一行
  stylelintIntegration: false, //不让prettier使用stylelint的代码格式进行校验
  eslintIntegration: false, //不让prettier使用eslint的代码格式进行校验
  tslintIntegration: false, // 不让prettier使用tslint的代码格式进行校验
  disableLanguages: ['vue'], // 不格式化vue文件,vue文件的格式化单独设置
  htmlWhitespaceSensitivity: 'ignore',
  ignorePath: '.prettierignore', // 不使用prettier格式化的文件填写在项目的.prettierignore文件中
  requireConfig: false, // Require a 'prettierconfig' to format prettier
}


4.保存自动格式化当前文件

  • 根目录下新建 .vscode/settings.json

// settings.json

{
  "typescript.tsdk": "node_modules/typescript/lib",
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.fixAll.stylelint": "explicit"
  },
  "stylelint.validate": ["css", "scss", "less", "vue"],
  "[vue]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[ts]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[scss]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

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

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

相关文章

基于单片机和组态王的温度监控系统的设计

摘 要 : 介绍了以 MSP430 单片机为核心 , 建立基于 DS18B20 和组态王的温度采集和监控系统。主要研究了单片机和组态王的通用通讯协议。按照 KingView 提供的通信协议 , 设计组态王与单片机的通信程序 , 实现了组态王与M SP430 单片机的直接串行通讯。在中药提取装置的…

2024年【建筑电工(建筑特殊工种)】模拟试题及建筑电工(建筑特殊工种)作业考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)模拟试题为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题,每个月更新的建筑电工(建筑特殊工种)作业考试题库祝您顺利通过建筑电工(建筑特殊工种)考试。 1、…

centos 安装deb格式安装包

背景 研发给了我一个deb包,需要我在centos 这种服务器操作系统上安装... deb包安装一般是使用dpkg -i xxxx.deb 命令,dpkg是Debian类型的系统,但是 通常centos是没有dpkg命令的... 直接就报:bash dpkg 未找到命令... 本来找研发给我编译rp…

基于高通8155的SNPE-PTQ量化方法介绍

一、基于高通8155的SNPE-PTQ量化与打包 量化位置与工作目录,snpe1.51与1.43环境结构相同,下面以1.51为例介绍: SNPE1.51量化:172.20.84.162:/media/share_31.106SNPE1.43量化:172.20.65.2:/media/share_31.106 脚本…

好用的兼容性测试工具推荐

兼容性测试确保软件在不同系统和环境中的一致性。本指南探讨了开发人员和QA专业人员有效检测和解决问题的工具,从而提高应用程序的稳健性和用户满意度。 好用的兼容性测试工具推荐 1.Lambda测试 它是一个由AI驱动的测试编排和执行平台,可让您使用超过300…

新能源电燃灶:变革与优势

在当今社会,能源问题日益凸显,能源危机成为了全球关注的焦点。而在厨房领域,一种名为新能源电燃灶的产品正逐渐走进人们的视野,以华火电燃灶为例,它展现出了令人瞩目的特点和潜力。 随着传统能源的逐渐枯竭和环境压力的…

使用MyBatis的动态SQL注解实现实体的CRUD操作

使用MyBatis的动态SQL注解实现实体的CRUD操作 1. 引言2. 准备工作2.1 创建数据表2.2 创建实体类 Book2.3 修改Mapper接口 BookMapper 3. 测试CRUD操作3.1 配置日志3.2 查询操作3.3 新增操作3.4 修改操作3.5 删除操作 4. 与MyBatis Plus的对比5. 动态SQL注解的适用场景5.1 动态查…

CSDN原力值涨分规则

CSDN的原力值是指用户在CSDN社区中的影响力和贡献程度的评估指标。原力值是根据用户在CSDN平台上的发表文章、获得的点赞和评论数量、参与的社区活动等多个因素综合计算得出的。较高的原力值意味着用户在CSDN社区中的影响力和知名度较高,其发表的文章和回答的问题可…

虹科技术丨跨越距离障碍:PCAN系列网关在远程CAN网络通信的应用潜力

来源:虹科技术丨跨越距离障碍:PCAN系列网关在远程CAN网络通信的应用潜力 原文链接:虹科技术 | 跨越距离障碍:PCAN系列网关在远程CAN网络通信的应用潜力 欢迎关注虹科,为您提供最新资讯! #PCAN #网关 #CA…

Steam夏促史低游戏推荐 Steam夏促哪有游戏值得入手

steam夏促来了,作为大型的季节特卖,这次夏促也是有很多不错的游戏,价格优惠也非常到位,想入手游戏的玩家可以抓住这次机会,夏促的时间是6.28到7.12,快去看看有没有心仪的游戏吧,本篇带来steam夏…

面试-java异常体系

1.java异常体系 error类是指与jvm相关的问题。如系统崩溃,虚拟机错误,内存空间不足。 非runtime异常不处理,程序就没有办法执行。 一旦遇到异常抛出,后面的异常就不会进行。 (1)常见的error以及exception 2.java异常要点分析…

CAM350如何移动元素?

CAM350如何移动元素? 1、选择菜单栏Edit→Move 2、然后按W键,光标变为下图的形状,然后框选需要移动的元素。 3、框选元素后如下图所示,然后右击,退出框选命令。 4、然后点选一个原点开始移动所选的元素。 移动后如下图…

MySQL数据库的存储引擎mylsam和innodb

一、存储引擎概述 1.什么是存储引擎 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 …

关于JVM必备的一些知识

一、类加载 【加载】 - 【链接】-【初始化】 1.1 加载(Loading) 加载阶段是类加载过程的第一步,它的主要任务是通过类的全限定名(Fully Qualified Class Name)来获取类的二进制字节流(binary data&#…

虹科技术丨Linux环境再升级:PLIN驱动程序正式发布

来源:虹科技术丨Linux环境再升级:PLIN驱动程序正式发布 原文链接:https://mp.weixin.qq.com/s/N4zmkYXTPr7xm-h2s7QiLw 欢迎关注虹科,为您提供最新资讯! #PLIN #LIN #LIN接口 导读 Linux驱动程序领域再添新成员&am…

入门机器视觉的正确打开方式——徒手撸一个python+opencv实现的机器视觉简易调试工具(下)

目录 1.引言2.框架思路3.图像处理流程化的实现3.1如何解析图像流程数据结构3.2 使用networkx网络图库3.3 python实现 4.结论5.python源码PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 1.引言 在当今AI时代,关于视觉…

昇思25天学习打卡营第4天|网络构建

文章目录 网络构建 网络构建 在打卡第一天就简单演示了网络构建,一个神经网络模型表示为一个Cell,由不同的子Cell构成。使用这样的嵌套结构可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。 继承nn.Cell类来定义神经网络&…

Android 界面库 (二) 之 Data binding 详细介绍

1. 简介 回顾我们在前面文章《Android 界面库 (一) 之 View binding 简单使用》中学习的 View Binding,它旨在简化 View 与代码之间的绑定过程。它会在编译时期为每个 XML 布局文件生成相应的绑定类(Binding class),该类里包含了布局文件每个有 ID 的 Vi…

centos7 安装单机MongoDB

centos7安装单机 yum 安装 1、配置yum源 vim /etc/yum.repos.d/mongodb.repo [mongodb-org-7.0] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp…

CSS实现文字颜色渐变

直接上代码和效果图&#xff1a; <p class"linecolor">文字颜色渐变</p><style type"text/css">.linecolor{font-size: 30px;background-image:-webkit-linear-gradient(bottom,red,#fd8403,yellow);-webkit-background-clip:text;-web…