vue3+Vite+TS项目,配置ESlint和Prettier

创建vue3项目

实操过的有两种方式

  • 1.vue脚手架
  • 2.vite(推荐,也是尤大大团队研发)

具体怎么新建一个vue3项目就不多讲了,可以按照官方文档来
创建后的文件目录长这样

在这里插入图片描述

多提一句,vite也会随着时间不断迭代,后续项目结构可能还会发生变化,当前使用的vue版本
和vite版本也一并贴出来

在这里插入图片描述
下面进入正题,为项目配置ESLint+Prettier

ESLint

1.ESLint介绍

是一个用于检测 ECMAScript/JavaScript 代码中的潜在问题和错误的工具,旨在使代码更一致并避免错误。它可以帮助开发者检测代码中的潜在问题,提高代码质量。

2.使用前提

必须安装Node.js(^12.22.0、 ^14.17.0 或>=16.0.0)

3.安装ESLint

方式一:以问题的形式,根据用户选择配置属性

使用以下命令安装和配置 ESLint :

npm init @eslint/config
# or
yarn create @eslint/config
# or
pnpm create @eslint/config

注意:运行以上命令是假设您已经有了一个package.json文件。如果没有,请确保事先运行pnpm init、npm init或yarn init。

按照提示步骤一步一步选择, 回车即可:

使用ESLint做什么? 建议选择第三个, 检查语法, 发现问题, 强制代码风格

? How would you like to use ESLint? …To check syntax onlyTo check syntax and find problems
❯ To check syntax, find problems, and enforce code style

项目模块类型? 普遍使用的 import/export 建议选择第一个

? What type of modules does your project use? …
❯ JavaScript modules (import/export)CommonJS (require/exports)None of these

项目用的啥框架? 果断Vue.js(vite也可以搭建React,牛啊)

? Which framework does your project use? …React
❯ Vue.jsNone of these

项目中使用 TypeScript? 根据自己项目情况选择(我是用到了,配置文件中有TS的部分

? Does your project use TypeScript? › No / Yes

代码运行环境? 支持多选,按空格选择/取消选择,建议全选上

? Where does your code run?   (Press <space> to select, <a> to toggle all, <i> to invert selection)
✔ Browser
✔ Node

选择代码风格? popular style里边没有 prettier ,建议使用回答问题来自定义代码风格,第二个

? How would you like to define a style for your project? …Use a popular style guide
❯ Answer questions about your style

ESLint 的配置文件格式?看个人习惯,建议选择 JavaScript, 原因可以在 js 文件中写条件判断语句来根据开发或生产环境开关 ESLint 规则

? What format do you want your config file to be in? …
❯ JavaScriptYAMLJSON

用啥缩进? 看个人习惯,我习惯spaces,选择空格的话默认是4个空格,习惯用2个空格的后边生成的配置中可以改成2个空格

? What style of indentation do you use? …Tabs
❯ Spaces

字符串使用双引号还是单引号? 看个人习惯

? What quotes do you use for strings? …
❯ DoubleSingle

用哪种结束符? Windows是CRLF, Unix是LF, 我选Unix

? What line endings do you use? …
❯ UnixWindows

用分号吗? 看个人习惯,我不喜欢分号,选的No

? Do you require semicolons? › No / Yes

检查到我没有安装ESLint, 是否马上安装? 安装 eslint 和 eslint-plugin-vue, 选择 Yes

Local ESLint installation not found.
The config that you've selected requires the following dependencies:eslint-plugin-vue@latest eslint@latest
? Would you like to install them now? › No / Yes

选择您使用的包管理器? 看个人习惯

? Which package manager do you want to use? …npm
❯ yarnpnpm

回车确认, 开始安装…

✔ How would you like to use ESLint? · style
✔ What type of modules does your project use? · esm
✔ Which framework does your project use? · vue
✔ Does your project use TypeScript? · No / Yes
✔ Where does your code run? · browser, node
✔ How would you like to define a style for your project? · prompt
✔ What format do you want your config file to be in? · JavaScript
✔ What style of indentation do you use? · 4
✔ What quotes do you use for strings? · double
✔ What line endings do you use? · unix
✔ Do you require semicolons? · No / Yes
Local ESLint installation not found.
The config that you've selected requires the following dependencies:eslint-plugin-vue@latest eslint@latest
✔ Would you like to install them now? · No / Yes
✔ Which package manager do you want to use? · yarn
Installing eslint-plugin-vue@latest, eslint@latest
...
...
Done in 27.9s
Successfully created .eslintrc.js file in /code/vue3.0-vite

在项目的 package.json 文件中查看 devDependencies增加了 eslint 和 eslint-plugin-vue 在项目根目录生成了.eslintrc.cjs 配置文件,打开文件找到 rules 把 indent 规则里边的 4 改成 2, 代码缩进就是 2 个空格了

在运行以上命令之后,目录中会有一个.eslintrc.{js,yml,json}文件。我选择使用的是JavaScript文件, 文件内容是这样的:

module.exports = {env: {browser: true,es2021: true,node: true,},extends: ["eslint:recommended","plugin:@typescript-eslint/recommended","plugin:vue/vue3-essential"],overrides: [{env: {node: true,},files: [".eslintrc.{js,cjs}"],parserOptions: {sourceType: "script",},},],parserOptions: {ecmaVersion: "latest",parser: "@typescript-eslint/parser",sourceType: "module",},plugins: ["@typescript-eslint", "vue"],rules: {indent: ["error", 2],"linebreak-style": ["error", "unix"],quotes: ["error", "double"],semi: ["error", "never"],},
}

方式二: 手动设置

可以在项目中手动设置ESLint。

注意: 在开始之前,您必须已经有一个package.json文件。如果没有,请确保预先运行pnpm init, npm init或yarn init来创建文件。

  1. 使用以下命令手动安装ESLint 和 Vue插件
npm install eslint@latest eslint-plugin-vue@latest -D
# or 
yarn add eslint@latest eslint-plugin-vue@latest -D
# or
pnpm add eslint@latest eslint-plugin-vue@latest -D
  1. 项目根目录中添加一个.eslintrc.js配置文件
# Create JavaScript configuration file
touch .eslintrc.js
  1. 在编辑器中打开.eslintrc.js配置文件进行自定义配置
// .eslintrc.js
module.exports = {env: {browser: true,es2021: true,node: true,},extends: ["eslint:recommended", "plugin:vue/vue3-essential"],overrides: [],parserOptions: {ecmaVersion: "latest",sourceType: "module",},plugins: ["vue"],rules: {indent: ["error", 2],"linebreak-style": ["error", "unix"],quotes: ["error", "double"],semi: ["error", "always"],},
};

以上步骤完成 ESLint 就安装上了

然后在项目根目录添加.eslintignore文件, 忽略不想让ESLint检查的文件夹和文件

touch .eslintignore

想忽略的全往里边列就行了, 举个例子 :

*.sh
*.md
*.woff
*.ttf
*.yaml
.vscode
.idea
node_modules
dist
public
docs
.husky
.eslintrc.js# Allowlist 'test.js' in the '.build' folder
# But do not allow anything else in the '.build' folder to be linted
!.build
.build/*
!.build/test.js

Prettier

1.Prettier介绍

  • 一个“有态度”的代码格式化工具
  • 支持大量编程语言
  • 已集成到大多数编辑器中
  • 几乎不需要设置参数

为什么使用Prettier?

  • 按保存键时,代码就被格式化了
  • 代码评审时无须争论代码样式
  • 节省时间和精力

2.安装Prettier

先在本地安装Prettier

npm install prettier@latest -D
# or
yarn add prettier@latest -D
# or
pnpm add prettier@latest -D

然后,创建一个空的配置文件,让编辑器和其他工具知道您正在使用Prettier:

echo {} > .prettierrc.json

在配置文件中增加如下内容:

// .prettierrc.json 规则配置, 后边将配置ESLint使用Prettier规则检查代码,以及怎么解决二者规则冲突的问题
{"useTabs": false,"tabWidth": 2,"jsxSingleQuote": false,"singleQuote": false,"endOfLine": "lf","semi": true,"trailingComma": "es5"
}

以下是Prettier的部分规则(根据项目的具体要求配置)

{/*  prettier的配置 */"printWidth": 100, // 超过最大值换行"tabWidth": 4, // 缩进字节数"useTabs": false, // 缩进不使用tab,使用空格"semi": true, // 句尾添加分号"singleQuote": true, // 使用单引号代替双引号"proseWrap": "preserve", // 默认值。因为使用了一些折行敏感型的渲染器(如GitHub comment)而按照markdown文本样式进行折行"arrowParens": "avoid", //  (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid:省略括号"bracketSpacing": true, // 在对象,数组括号与文字之间加空格 "{ foo: bar }""disableLanguages": ["vue"], // 不格式化vue文件,vue文件的格式化单独设置"endOfLine": "auto", // 结尾是 \n \r \n\r auto"eslintIntegration": false, //不让prettier使用eslint的代码格式进行校验"htmlWhitespaceSensitivity": "ignore","ignorePath": ".prettierignore", // 不使用prettier格式化的文件填写在项目的.prettierignore文件中"jsxBracketSameLine": false, // 在jsx中把'>' 是否单独放一行"jsxSingleQuote": false, // 在jsx中使用单引号代替双引号"parser": "babylon", // 格式化的解析器,默认是babylon"requireConfig": false, // Require a 'prettierconfig' to format prettier"stylelintIntegration": false, //不让prettier使用stylelint的代码格式进行校验"trailingComma": "es5", // 在对象或数组最后一个元素后面是否加逗号(在ES5中加尾逗号)"tslintIntegration": false // 不让prettier使用tslint的代码格式进行校验
}

(可选)接下来,创建一个.prettierignore文件,让Prettier CLI和编辑器知道不格式化哪些文件。下面是一个例子:

# Ignore artifacts:
build
coverage

我没有创建.prettierignore文件, 感觉有.eslintignore就够了

提示: 以.gitignore 和.eslintignore 为基础(如果你有)。

现在,使用Prettier格式化所有文件:

npx prettier --write .
# or 只检查src下所有文件
prettier --write --loglevel warn "src/**/*.{js,ts,json,tsx,css,less,vue,html,md}"

小技巧:webstorm使用prettier,实现保存文件时自动执行Prettier格式化
在这里插入图片描述

配合ESLint使用, 解决二者规则冲突

当 ESLint 的规则和 Prettier 的规则相冲突时,就会发现一个尴尬的问题,用Prettier来格式化代码,ESLint就会报错。

与ESLint配合使用,请安装eslint-config-prettier,以使ESLint和Prettier彼此配合得很好。它关闭所有不必要的或可能与Prettier冲突的ESLint规则。具体步骤如下:

# Install eslint-config-prettier
npm install eslint-config-prettier@latest -D
# or
yarn add eslint-config-prettier@latest -D
# or
pnpm add eslint-config-prettier@latest -D

修改.eslintrc.js

module.exports = {// 在 extends 尾部加入 prettier 即可extends: ["eslint:recommended","plugin:@typescript-eslint/recommended","plugin:vue/vue3-essential","prettier"]
};

但是以上做法只是关闭了与Prettier相冲突的ESLint的规则, 而我们的目标是要让ESLint使用Prettier的规则去检查代码语法和风格等问题, 有办法, prettier官方有个插件eslint-plugin-prettier, 使用这个插件一步简单的配置就搞定:

prettier官方推荐配置方法

1.安装eslint-plugin-prettier和eslint-config-prettier

npm install eslint-plugin-prettier@latest eslint-config-prettier@latest -D
# or
yarn add eslint-plugin-prettier@latest eslint-config-prettier@latest -D
# or
pnpm add eslint-plugin-prettier@latest eslint-config-prettier@latest -D

2.在.eslintrc.js中添加plugin:prettier/recommended作为最后一个扩展

module.exports = {// 在 extends 尾部增加 plugin:prettier/recommendedextends: ["eslint:recommended","plugin:@typescript-eslint/recommended","plugin:vue/vue3-essential","plugin:prettier/recommended",],
};

plugin:prettier/recommended相当于以下配置:

module.exports = {extends: ["prettier"],plugins: ["prettier"],rules: {"prettier/prettier": "error","arrow-body-style": "off","prefer-arrow-callback": "off",},
};

现在,修改后的eslintrc.js就可以让ESLint和Prettier配合工作了

拓展:启动项目和打包代码时进行代码检查

使用vite-plugin-eslint插件, 默认配置是如果检查有error类型的问题就启动或打包失败, warn类型的问题不影响启动和打包 开始配置:

1.安装vite-plugin-eslint

npm install vite-plugin-eslint@latest -D
# or
yarn add vite-plugin-eslint@latest -D
# or
pnpm add vite-plugin-eslint@latest -D

2.在 vite 的配置文件中引入插件并配置到 plugins 中

import { defineConfig } from "vite"
import vue from "@vitejs/plugin-vue"
import eslint from "vite-plugin-eslint"// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(), eslint({ lintOnStart: true, cache: false })],
})

拓展:覆盖 vue/multi-word-component-names 规则

在这里插入图片描述
这个规则要求组件名称要多个单词构成, 而我们当初写的时候没有注意这一点, 现在改成本太大了, 只能把这个规则给覆盖掉

module.exports = {// .eslintrc.js 文件 overrides 部分overrides: [{files: ["src/**/*.vue"],rules: { "vue/multi-word-component-names": "off" },},],
};

总结

ESLint配置文件(需求不同,会有一些差异)

// .eslintrc.jsmodule.exports = {env: {browser: true,es2021: true,node: true,},extends: ["eslint:recommended","plugin:@typescript-eslint/recommended","plugin:vue/vue3-essential","plugin:prettier/recommended",],overrides: [{env: {node: true,},files: [".eslintrc.{js,cjs}"],parserOptions: {sourceType: "script",},},{files: ["src/**/*.vue"],// 关闭组件名需要多个单词组成的规则rules: { "vue/multi-word-component-names": "off" },},],parserOptions: {ecmaVersion: "latest",parser: "@typescript-eslint/parser",sourceType: "module",},plugins: ["@typescript-eslint", "vue"],rules: {// 解决ESLint和Prettier的switch/case缩进冲突indent: ["error", 2, { SwitchCase: 1 }],"no-unused-vars": "off",// vite打包时自动去除console和debugger,所以这里直接关掉检查"no-console": "off","no-debugger": "off",// 允许catch空着"no-empty": ["error", { allowEmptyCatch: true }],"linebreak-style": ["error", "unix"],quotes: ["error", "double"],semi: ["error", "never"],},
};

Prettier配置文件

// .prettierrc.json{"useTabs": false,"tabWidth": 2,"jsxSingleQuote": false,"singleQuote": false,"endOfLine": "lf","semi": false,"trailingComma": "es5"
}

安装的依赖包

// package.json 中新增了如下依赖包
{"devDependencies": {"@typescript-eslint/eslint-plugin": "^7.3.1","@typescript-eslint/parser": "^7.3.1","eslint": "^8.57.0","eslint-config-prettier": "^9.1.0","eslint-plugin-prettier": "^5.1.3","eslint-plugin-vue": "^9.23.0","prettier": "^3.2.5",// vite插件"vite-plugin-eslint": "^1.8.1"}
}

结束

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

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

相关文章

【绘图案例-自定义进度条 Objective-C语言】

一、好,我们接着来说这个自定义进度条 1.这个Slider啊,简单的这个value属性,介绍完了,以后,监听也可以监听的到了,接下来,我们来做这个自定义进度条啊, 那么,首先啊,我是这么想的,在这个slider的最小值、和、最大值、我给它改成0、到、1、 因为如果这样的话,到时候…

安装 使用 ida pro linux

安装 ida pro linux 下载地址 下载解压文件&#xff0c;然后linux下直接双击安装 ida7.5demo*******.run这个安装包 然后查找安装目录&#xff0c;一般桌面图标都有对应执行程序的路径 将crack包中的内容覆盖到这个安装目录中 然后双击执行就可以正常运行&#xff0c;new 打…

安装 allure 时踩到的坑:ERROR: JAVA_HOME is set to an invalid directory

报错内容是&#xff1a; 安装 allure 时ERROR: JAVA_HOME is set to an invalid directory: F:\soft\jdk Please set the JAVA_HOME variable in your environment to match the location of your Java installation。 这个问题的原因是java环境的环境变量不能运行 也就是在cm…

5步到位,苹果手机铃声设置原来这么简单!

苹果手机铃声设置是个人化手机体验的重要部分&#xff0c;通过设置喜爱的铃声可以让手机更加个性化&#xff0c;也更容易识别来电。然而&#xff0c;对于一些新手来说&#xff0c;可能不太清楚如何在苹果手机上进行铃声设置&#xff0c;或者可能不知道如何将自己喜欢的音乐或声…

基于云计算的前端资源管理系统的设计与实现

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 随着互联网的快速发展&#xff0c;前端资源管理成为了一个重要的课题。本文旨在设计并实…

【正点原子FreeRTOS学习笔记】————(14)事件标志组

这里写目录标题 一、事件标志组简介&#xff08;了解&#xff09;二、事件标志组相关API函数介绍&#xff08;熟悉&#xff09;三、事件标志组实验&#xff08;掌握&#xff09; 一、事件标志组简介&#xff08;了解&#xff09; 事件标志位&#xff1a;用一个位&#xff0c;来…

旺店通·旗舰奇门和金蝶云星空单据接口对接

旺店通旗舰奇门和金蝶云星空单据接口对接 来源系统:金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#xff0c;旨在帮助企业打造面…

外包干了15天,技术退步明显。。。。。。

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

【Java程序设计】【C00391】基于(JavaWeb)Springboot的校园疫情防控信息管理系统(有论文)

基于&#xff08;JavaWeb&#xff09;Springboot的校园疫情防控信息管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff…

[实战]Springboot与GB28181摄像头对接。摄像头注册上线(一)

与支持国标摄像头对接 前言&#xff1a;不想看教程&#xff1f;1、准备阶段1.1、我们会学到什么&#xff1f;1.2、创建项目1.3、pom中用到的依赖1.4 打开摄像头的网址(了解配置方式) 2、代码编写2.1、增加项目配置2.2、在config目录下创建SipConfig2.3、在service目录下创建Sip…

Go通道机制与应用详解

目录 一、概述二、Go通道基础通道&#xff08;Channel&#xff09;简介创建和初始化通道通道与协程&#xff08;Goroutine&#xff09;的关联nil通道的特性 三、通道类型与操作通道类型1. 无缓冲通道 (Unbuffered Channels)2. 有缓冲通道 (Buffered Channels) 通道操作1. 发送操…

【技巧】PyTorch限制GPU显存的可使用上限

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 从 PyTorch 1.4 版本开始&#xff0c;引入了一个新的功能 torch.cuda.set_per_process_memory_fraction(fraction, device)&#xff0c;这个功能允许用户为特定的 GPU 设备设置进程可使用的显存上限比例。 测试代…

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool&#x1f36c;…

【前端学习——js篇】6.事件模型

具体见&#xff1a;https://github.com/febobo/web-interview 6.事件模型 ①事件与事件流 事件(Events) 事件是指页面中发生的交互行为&#xff0c;比如用户点击按钮、键盘输入、鼠标移动等。在js中&#xff0c;可以通过事件来触发相应的操作&#xff0c;例如执行函数、改变…

dump文件分析OOM及线程堆栈

OutOfMemoryError (OOM) 如果项目报错&#xff1a; OutOfMemoryError: Java heap space&#xff0c;说明堆内存空间&#xff08;Heap Space&#xff09;中没有足够的空间来分配对象了。 一旦发生 OOM&#xff0c;系统有可能不可用&#xff0c;或者频繁重启。属于非常严重的问题…

基于springboot实现校园管理系统项目【项目源码+论文说明】

基于springboot实现校园管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;校园管理系统当然也不能排除在外。校园管理系统是以实际运用为开发背景&#xff0c…

修改 RabbitMQ 默认超时时间

MQ客户端正常运行&#xff0c;突然就报连接错误&#xff0c; 错误信息写的很明确&#xff0c;是客户端连接超时。 不过很疑虑&#xff0c;为什么会出现连接超时呢&#xff1f;代码没动过&#xff0c;网络也ok&#xff0c;也设置了心跳和重连机制。 最终在官网中找到了答案&am…

windows-MySQL5.7安装

1.安装包下载 https://downloads.mysql.com/archives/community/&#xff08;社区版下载链接&#xff09; 选择Archives可以下载历史包&#xff0c;此处使用5.7.43 2.解压文件 解压文件到你指定安装的目录&#xff1a;解压完成后在mysql-5.7.43-winx64下新建文件my.ini和d…

企业引入“四力平衡”理念,激励员工工作积极性

—— 如何激励业务人员的工作积极性&#xff1f;【所属行业】生产制造业【问题类型】业务人员绩效考核【客户背景】J公司成立于1985年&#xff0c;目前主要从事机床、工具及相关产品的进出口贸易和国内营销业务&#xff0c;自1990年以来&#xff0c;一直属于全国最大的500家外贸…

如何备考2024年AMC10:吃透2000-2023年1250道真题(限时免费送)

有家长朋友问&#xff0c;有没有适合初中学生参加的奥数类比赛&#xff1f;我推荐AMC10美国数学竞赛&#xff0c;在国内可以方便地参加&#xff0c;而且每年全国各省市参加的初中生越来越多。关于AMC10详细的介绍和常见问题解答&#xff0c;可以联系我获得。 那么如何在AMC10竞…