当前位置: 首页 > news >正文

vue3+TS项目配置Eslint+prettier+husky语法校验

vue3+TS项目配置Eslint+prettier+husky语法校验

本文配置了Eslint+prettier+husky。其中ESLint 负责代码质量检查,Prettier 负责代码格式统一,Husky 通过 Git 钩子在提交时自动执行检查与格式化,三者结合确保代码规范、风格一致且无低级错误。

1. Eslint

(1)在项目中执行npx eslint --init
在这里插入图片描述
你可能看见的问题

What do you want to lint?	 » JavaScript
How would you like to use ESLint?	» To check syntax and find problems
What type of modules does your project use?		» JavaScript modules (import/export)
Which framework does your project use? 		 » Vue.js
Does your project use TypeScript? »  Yes
Where does your code run? 	» √ Browser  √ Node	(空格多选)
Which language do you want your configuration file be written in? 	»JavaScript
Would you like to install them now? » Yes
Which package manager do you want to use?	» npm

(2)修改生成的eslint.config.js

import js from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";
import { defineConfig } from "eslint/config";export default defineConfig([{// 需要校验的文件files: ["**/*.{js,mjs,cjs,ts,mts,cts,vue}"],plugins: { js },extends: ["js/recommended"],languageOptions: { globals: { ...globals.browser, ...globals.node } }},tseslint.configs.recommended,pluginVue.configs["flat/essential"],{// vue 文件中的ts语法校验files: ["**/*.vue"],languageOptions: { parserOptions: { parser: tseslint.parser } }},{// 忽略校验ignores: [".css", "*.d.ts", "**/node_modules/**"]},{// 自定义eslint校验规则rules: {"no-console": "warn"}}
]);

(3)修改package.json中的scripts

{"scripts": {"dev": "vite","build": "vue-tsc -b && vite build","preview": "vite preview","lint": "eslint","lint:fix": "eslint --fix --quiet",}
}

(4)vscode中下载ESlint插件

2. Prettier

(1)安装依赖

npm install prettier eslint-plugin-prettier eslint-config-prettier -D

(2)项目根目录(与vite.config.ts同级)新建文件prettier.config.js

export default {singleQuote: false, // 使用单引号semi: true, // 末尾使用分号trailingComma: "none", // 使用尾随逗号printWidth: 120, // 每行代码的长度tabWidth: 2, // 缩进宽度useTabs: false, // 使用制表符缩进endOfLine: "auto"
};

(3)修改eslint.config.js

import js from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";
import { defineConfig } from "eslint/config";
import prettierRecommended from "eslint-plugin-prettier/recommended";export default defineConfig([{// 需要校验的文件files: ["**/*.{js,mjs,cjs,ts,mts,cts,vue}"],plugins: { js },extends: ["js/recommended"],languageOptions: { globals: { ...globals.browser, ...globals.node } }},tseslint.configs.recommended,pluginVue.configs["flat/essential"],{// vue 文件中的ts语法校验files: ["**/*.vue"],languageOptions: { parserOptions: { parser: tseslint.parser } }},{// 忽略校验ignores: [".css", "*.d.ts", "**/node_modules/**"]},{// 自定义eslint校验规则rules: {"no-console": "warn"}},// 集成prettierprettierRecommended
]);

(4)下载vscode插件Prettier - Code formatter
(5)vscode中设置保存自动修复代码
在这里插入图片描述
在这里插入图片描述

3. husky

(1)安装依赖

npm install husky lint-staged -D

(2)修改package.json

{"scripts":{...},"lint-staged": {"src/**/*.{js,cjs,ts,vue}": ["npm run lint:fix"],"src/**/*.{html,json,css,scss}": ["npx prettier --write"]}
}

(3)初始化husky,会生成一个.husky的文件夹

npx husky init

修改文件夹中的pre-commit文件

npx lint-staged

(4)新建文件commitlint.config.cjs(与vite.config.ts同级)

module.exports = {extends: ["@commitlint/config-conventional"]
};

(5)配置commit信息校验

npm install @commitlint/cli @commitlint/config-conventional -D

(6)在pre-commit同级创建commit-msg文件,并修改文件内容

npx commitlint --edit $1

在这里插入图片描述


文章转载自:

http://vEtJcqTh.nyrws.cn
http://3Vw3qBL2.nyrws.cn
http://biFvuDmz.nyrws.cn
http://a0bt9D7u.nyrws.cn
http://ZgmHEsb0.nyrws.cn
http://c3eaVItX.nyrws.cn
http://N4tN4Fzr.nyrws.cn
http://sDT940ZR.nyrws.cn
http://Av9bT5WX.nyrws.cn
http://6DLpf67X.nyrws.cn
http://eGCov7fw.nyrws.cn
http://SqxvXbXD.nyrws.cn
http://5MQBoRE8.nyrws.cn
http://TUW1SGcC.nyrws.cn
http://G7LlYGbA.nyrws.cn
http://CGiKT7qy.nyrws.cn
http://G8cDo7bM.nyrws.cn
http://73G4FHqJ.nyrws.cn
http://1S2dW8SF.nyrws.cn
http://mYrgyCz9.nyrws.cn
http://vglklHi8.nyrws.cn
http://bliZFD3y.nyrws.cn
http://6LMLkVof.nyrws.cn
http://1s0er9As.nyrws.cn
http://ByyofPdF.nyrws.cn
http://tkLdKfs6.nyrws.cn
http://6Vv9RfEl.nyrws.cn
http://xv8VTSZg.nyrws.cn
http://cOZvUBFO.nyrws.cn
http://2AAc7NBn.nyrws.cn
http://www.dtcms.com/a/377657.html

相关文章:

  • Redis 5单线程 vs 6多线程性能解析
  • CSS 特指度 (Specificity)
  • 数据结构(C语言篇):(十一)二叉树概念介绍
  • 【go语言 | 第1篇】Go环境安装+go语言特性
  • 嵌入式面试题(4)
  • Python中的getattr/setattr和pybind11中的attr相關函數
  • Qt之Model/View架构
  • 龙虎榜——20250910
  • 嵌入式系统
  • Ngrok vs 飞网:内网穿透工具对比指南
  • 计算机毕设 java 高校家教平台 基于 SSM 框架的高校家教服务平台 Java+MySQL 的家教预约与课程管理系统
  • 招聘智能化浪潮:AI面试工具如何重塑招聘格局?
  • Java EE servlet与MySQL表单 工程实现增加查询数据
  • 上网管理行为-路由模式部署
  • Omni-UI:58同城鸿蒙ArkUI精心打造的UI组件库使用
  • 六自由度Stewart并联机器人simulink建模与模拟仿真
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘sympy’问题
  • 测试之道:从新手到专家实战(四)
  • 基于elementUI实现一个可编辑的表格(简洁版)
  • 智能美妆功能开发指南:直播美颜sdk的架构与算法解析
  • MySQL 浮点数、定点数与位类型:搞懂 3 类特殊数值的核心用法
  • 运动生理实验室解决方案 人体生理实验整体解决方案
  • Ping命令为何选择ICMP而非TCP/UDP?
  • 工业锅炉的“健康卫士”—状态监测与故障诊断
  • 大模型微调技术宝典:Transformer架构,从小白到专家
  • 同步框架与底层消费机制解决方案梳理
  • 计算机毕设 java 高校教材管理系统 基于 Java+SSM 的高校教材管控平台 Java+MySQL 的教材全流程管理系统
  • 用分层架构打造单体应用
  • TCP 拥塞控制设计空间课程要点总结
  • 工业网络融合:DEVICENET转PROFINET网关在汽车总装车间的应用