【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范

简介: 【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范

前言

本文介绍 vue3-element-admin 如何通过ESLint 检测 JS/TS 代码、Prettier 格式化代码、Stylelint 检测 CSS/SCSS 代码和配置 EditorConfig 来全方位约束和统一前端代码规范。


ESLint 代码检测

ESLint 可组装的JavaScript和JSX检查工具,目标是保证代码的一致性和避免错误。


ESLint 安装

安装 ESLint 插件

VSCode 插件市场搜索 ESLint 插件并安装

微信图片_20230710101015.png



安装 ESLint 依赖

npm i -D eslint

1

ESLint 配置

ESLint 配置(.eslintrc.cjs)

执行命令完成 ESLint 配置初始化


npx eslint --init

1微信图片_20230710101020.png



根目录自动生成的 .eslintrc.cjs 配置内容如下:


module.exports = {

 env: {

   es2021: true,

   node: true,

 },

 extends: [

   "eslint:recommended",

   "plugin:vue/vue3-essential",

   "plugin:@typescript-eslint/recommended",

 ],

 overrides: [],

 parser: "@typescript-eslint/parser",

 parserOptions: {

   ecmaVersion: "latest",

   sourceType: "module",

 },

 plugins: ["vue", "@typescript-eslint"],

 rules: {},

};


ESLint 解析器配置

在默认配置基础上需要修改解析器为 vue-eslint-parser ,不然在检测执行中出现 error Parsing error: '>' expected 的解析错误,修改 .eslintrc.cjs 如下:

微信图片_20230710101042.png



ESLint 忽略配置(.eslintignore)

根目录新建 .eslintignore 文件,添加忽略文件, ESLint 校验会忽略这些文件,配置如下:


dist

node_modules

public

.husky

.vscode

.idea

*.sh

*.md


src/assets


.eslintrc.cjs

.prettierrc.cjs

.stylelintrc.cjs


ESLint 检测指令

package.json 添加 eslint 检测指令:


 "scripts": {

   "lint:eslint": "eslint \"src/**/*.{vue,ts,js}\" --fix"

 }

1

2

3

ESLint 检测

ESLint 检测 & 验证

执行命令进行ESLint检测:


npm run lint:eslint

1

微信图片_20230710101100.png


ESLint 保存自动检测

打开 File → Preferences → Settings 搜索 Editor: Code Actions On Save 选择 Workspace标签设置工作区,点击 Edit in settings.json

微信图片_20230710101105.png



{

 "editor.formatOnSave": true,

 "editor.codeActionsOnSave": {

   "source.fixAll.eslint": true // 开启eslint自动检测

 }

}


Prettier 代码格式化

Prettier 一个“有态度”的代码格式化工具。


Prettier 安装

安装 Prettier 插件

VSCode 插件市场搜索 Prettier - Code formatter 插件安装

微信图片_20230710101128.png


安装 Prettier 依赖

npm install -D prettier

1

Prettier 配置

Prettier 配置 (.prettierrc.cjs)

根目录创建.prettierrc.cjs 文件,复制 官方默认配置 (详细配置:Prettier 中文网 - Options)


module.exports = {

 // (x)=>{},单个参数箭头函数是否显示小括号。(always:始终显示;avoid:省略括号。默认:always)

 arrowParens: "always",

 // 开始标签的右尖括号是否跟随在最后一行属性末尾,默认false

 bracketSameLine: false,

 // 对象字面量的括号之间打印空格 (true - Example: { foo: bar } ; false - Example: {foo:bar})

 bracketSpacing: true,

 // 是否格式化一些文件中被嵌入的代码片段的风格(auto|off;默认auto)

 embeddedLanguageFormatting: "auto",

 // 指定 HTML 文件的空格敏感度 (css|strict|ignore;默认css)

 htmlWhitespaceSensitivity: "css",

 // 当文件已经被 Prettier 格式化之后,是否会在文件顶部插入一个特殊的 @format 标记,默认false

 insertPragma: false,

 // 在 JSX 中使用单引号替代双引号,默认false

 jsxSingleQuote: false,

 // 每行最多字符数量,超出换行(默认80)

 printWidth: 120,

 // 超出打印宽度 (always | never | preserve )

 proseWrap: "preserve",

 // 对象属性是否使用引号(as-needed | consistent | preserve;默认as-needed:对象的属性需要加引号才添加;)

 quoteProps: "as-needed",

 // 是否只格式化在文件顶部包含特定注释(@prettier| @format)的文件,默认false

 requirePragma: false,

 // 结尾添加分号

 semi: true,

 // 使用单引号 (true:单引号;false:双引号)

 singleQuote: false,

 // 缩进空格数,默认2个空格

 tabWidth: 2,

 // 元素末尾是否加逗号,默认es5: ES5中的 objects, arrays 等会添加逗号,TypeScript 中的 type 后不加逗号

 trailingComma: "es5",

 // 指定缩进方式,空格或tab,默认false,即使用空格

 useTabs: false,

 // vue 文件中是否缩进 <style> 和 <script> 标签,默认 false

 vueIndentScriptAndStyle: false,

};



格式化忽略配置( .prettierignore)

根目录新建 .prettierignore 文件,添加忽略配置如下:


dist

node_modules

public

.husky

.vscode

.idea

*.sh

*.md

src/assets


prettier 格式化指令

package.json 添加 prettier 格式化指令:


 "scripts": {

   "lint:prettier": "prettier --write \"**/*.{js,ts,json,css,less,scss,vue,html,md}\""

 }

Prettier 格式化

Prettier 格式化 & 验证

执行命令进行 Prettier 代码格式化:


npm run lint:prettier

1

微信图片_20230710101148.png


Prettier 保存自动格式化

VSCode 的 settings.json 配置:


{

 "editor.formatOnSave": true, // 保存格式化文件

 "editor.defaultFormatter": "esbenp.prettier-vscode" // 指定 prettier 为所有文件默认格式化器

}


验证保存自动格式化

微信图片_20230710101218.gif



Stylelint CSS 检测

Stylelint 一个强大的 CSS linter(检查器),可帮助您避免错误并强制执行约定。官方网站: https://stylelint.io


注意官网明确指出 Stylelint 作为 CSS 代码规范检测而不作为代码格式化工具使用(Prettier 是更好的选择),新版本(15.0.0)为此废弃相关的 rules


微信图片_20230710101231.png


Stylelint 安装

安装 Stylelint 插件

VSCode 插件搜索 Stylelint 并安装


微信图片_20230710101241.png


安装 Stylelint 依赖

pnpm install -D stylelint stylelint-config-standard stylelint-config-recommended-scss stylelint-config-recommended-vue postcss postcss-html postcss-scss stylelint-config-recess-order stylelint-config-html

1

依赖                                            说明                                              备注

stylelint stylelint                                  核心库                                 stylelint

stylelint-config-standard   Stylelint 标准共享配置       stylelint-config-standard 文档

stylelint-config-recommended-scss 扩展 stylelint-config-recommended 共享配置并为 SCSS 配置其规则 stylelint-config-recommended-scss 文档

stylelint-config-recommended-vue 扩展 stylelint-config-recommended 共享配置并为 Vue 配置其规则 stylelint-config-recommended-vue 文档

stylelint-config-recess-order 提供优化样式顺序的配置 CSS 书写顺序规范

stylelint-config-html 共享 HTML (类似 HTML) 配置,捆绑 postcss-html 并对其进行配置 stylelint-config-html 文档

postcss-html           解析 HTML (类似 HTML) 的 PostCSS 语法        postcss-html 文档

postcss-scss                  PostCSS 的 SCSS 解析器 postcss-scss 文档,支持 CSS 行类注释

Stylelint 配置

Stylelint 配置(.stylelintrc.cjs)

根目录新建 .stylelintrc.cjs 文件,配置如下:


module.exports = {

 // 继承推荐规范配置

 extends: [

   "stylelint-config-standard",

   "stylelint-config-recommended-scss",

   "stylelint-config-recommended-vue/scss",

   "stylelint-config-html/vue",

   "stylelint-config-recess-order",

 ],

 // 指定不同文件对应的解析器

 overrides: [

   {

     files: ["**/*.{vue,html}"],

     customSyntax: "postcss-html",

   },

   {

     files: ["**/*.{css,scss}"],

     customSyntax: "postcss-scss",

   },

 ],

 // 自定义规则

 rules: {

   // 允许 global 、export 、v-deep等伪类

   "selector-pseudo-class-no-unknown": [

     true,

     {

       ignorePseudoClasses: ["global", "export","v-deep", "deep"],

     },

   ],

 },

};


Stylelint 忽略配置(.stylelintignore)

根目录创建 .stylelintignore 文件,配置忽略文件如下:


dist

node_modules

public

.husky

.vscode

.idea

*.sh

*.md

src/assets


Stylelint 检测指令

package.json 添加 Stylelint 检测指令:


 "scripts": {

     "lint:stylelint": "stylelint  \"**/*.{css,scss,vue,html}\" --fix"

 }

1

2

3

Stylelint 检测

Stylelint 检测 & 验证

执行以下命令完成


npm run lint:stylelint

1

验证

微信图片_20230710101301.png



StyleLint 保存自动检测

VSCode 的 settings.json 配置内容如下:


{

 "editor.codeActionsOnSave": {

   "source.fixAll.stylelint": true // 开启 Stylelint 保存自动检测

 },

 // Stylelint 校验文件

 "stylelint.validate": ["css", "scss", "vue", "html"]

}


为了验证把尺寸属性 width 放置在定位属性 position 前面,根据 CSS 书写顺序规范 推断是不符合规范的,在保存时 Stylelint 自动将属性重新排序,达到预期。

微信图片_20230710101319.gif



EditorConfig 编辑器配置

EditorConfig 主要用于统一不同 IDE 编辑器的编码风格。官方网站: https://editorconfig.org/


安装 EditorConfig 插件

VSCode 搜索 EditorConfig for VS Code 插件并安装

微信图片_20230710101332.png

配置 EditorConfig

根目录创建 .editorconfig 文件,添加配置如下:


# http://editorconfig.org

root = true

# 表示所有文件适用

[*]

charset = utf-8 # 设置文件字符集为 utf-8

end_of_line = lf # 控制换行类型(lf | cr | crlf)

indent_style = tab # 缩进风格(tab | space)

insert_final_newline = true # 始终在文件末尾插入一个新行

# 表示仅 md 文件适用以下规则

[*.md]

max_line_length = off # 关闭最大行长度限制

trim_trailing_whitespace = false # 关闭末尾空格修剪


项目源码

完整项目源码地址如下,如果有相关问题可以通过项目 关于我们 添加交流群。


Gitee Github

仓库地址 vue3-element-admin vue3-element-admin


相关文章
|
11月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
1032 1
|
12月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
638 83
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
675 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
11月前
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
451 22
|
JavaScript 前端开发 搜索推荐
Vue的数据驱动视图与其他前端框架的数据驱动方式有何不同?
总的来说,Vue 的数据驱动视图在诸多方面展现出独特的优势,其与其他前端框架的数据驱动方式的不同之处主要体现在绑定方式、性能表现、触发机制、组件化结合、灵活性、语法表达以及与后端数据交互等方面。这些差异使得 Vue 在前端开发领域具有独特的地位和价值。
568 157
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
391 10
|
前端开发 JavaScript 开发者
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
969 4
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    992
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    424
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    333
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    317
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    429
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    609
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    805
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    222
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    661
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    388