前端工程规范-3:CSS规范(Stylelint)

news2024/12/26 2:22:28

样式规范工具(StyleLint)

Stylelint 是一个灵活且强大的工具,适用于保持 CSS 代码的质量和一致性。结合其他工具(如 Prettier 和 ESLint),可以更全面地保障前端代码的整洁性和可维护性。

目录

  • 样式规范工具(StyleLint)
    • 1、安装 VSCode 插件(StyleLint)
    • 2、在项目中下载 StyleLint 相关依赖
    • 3、在目录的 `.vscode` 文件夹下的 `settings.json` 文件中,加入如下配置
    • 4、配置 StyleLint(.stylelintrc.cjs)
    • 5、package.json添加脚本命令

1、安装 VSCode 插件(StyleLint)

在这里插入图片描述

VS Code插件StyleLint可以在编辑器中提供实时的 CSS 代码检查和提示,但是它仅仅是基于 Stylelint 包的扩展,不能完全取代在项目中导入 Stylelint 包并做一些配置的操作

2、在项目中下载 StyleLint 相关依赖

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

注意:最新的stylelint版本可能和后面的其他包的版本产生冲突,如果你没有使用pnpm,而是npm,建议直接加上了强制安装依赖项 --legacy-peer-deps或者--force

依赖作用描述
stylelintstylelint 核心库
stylelint-config-htmlStylelint 的可共享 HTML(和类似 HTML)配置,捆绑 postcss-html 并对其进行配置。
stylelint-config-recommended-scss扩展 stylelint-config-recommended 共享配置,并为 SCSS 配置其规则
stylelint-config-recommended-vue扩展 stylelint-config-recommended 共享配置,并为 Vue 配置其规则
stylelint-config-standard打开额外的规则来执行在规范和一些 CSS 样式指南中发现的通用约定,包括:惯用 CSS 原则,谷歌的 CSS 样式指南,Airbnb 的样式指南,和 @mdo 的代码指南。
stylelint-config-standard-scss扩展 stylelint-config-standard 共享配置,并为 SCSS 配置其规则
stylelint-config-recess-order属性的排序(插件包)
postcsspostcss-html 的依赖包
postcss-html用于解析 HTML(和类似 HTML)的 PostCSS 语法
stylelint-config-prettier关闭所有不必要的或可能与 Prettier 冲突的规则

3、在目录的 .vscode 文件夹下的 settings.json 文件中,加入如下配置

{
	"editor.formatOnSave": true,
	"editor.codeActionsOnSave": {
		"source.fixAll.stylelint": "explicit"
	},
	"stylelint.enable": true,
	"stylelint.validate": [
		"css",
		"less",
		"postcss",
		"scss",
		"vue",
		"sass",
		"html"
	],
	"files.eol": "\n"
}

4、配置 StyleLint(.stylelintrc.cjs)

// @see: https://stylelint.io

module.exports = {
	root: true,
	// 继承某些已有的规则
	extends: [
		"stylelint-config-standard", // 配置 stylelint 拓展插件
		"stylelint-config-html/vue", // 配置 vue 中 template 样式格式化
		"stylelint-config-standard-scss", // 配置 stylelint scss 插件
		"stylelint-config-recommended-vue/scss", // 配置 vue 中 scss 样式格式化
		"stylelint-config-recess-order", // 配置 stylelint css 属性书写顺序插件,
		"stylelint-config-prettier", // 配置 stylelint 和 prettier 兼容
	],
	overrides: [
		// 扫描 .vue/html 文件中的 <style> 标签内的样式
		{
			files: ["**/*.{vue,html}"],
			customSyntax: "postcss-html",
		},
	],
	rules: {
		"function-url-quotes": "always", // URL 的引号 "always(必须加上引号)"|"never(没有引号)"
		"string-quotes": "double", // 指定字符串使用单引号或双引号 "single(单引号)"|"double(双引号)"
		"unit-case": "lower", // 指定单位的大小写 "lower(全小写)"|"upper(全大写)"
		"color-hex-case": "lower", // 指定 16 进制颜色的大小写 "lower(全小写)"|"upper(全大写)"
		"color-hex-length": "long", // 指定 16 进制颜色的简写或扩写 "short(16进制简写)"|"long(16进制扩写)"
		"rule-empty-line-before": "never", // 要求或禁止在规则之前的空行 "always(规则之前必须始终有一个空行)"|"never(规则前绝不能有空行)"|"always-multi-line(多行规则之前必须始终有一个空行)"|"never-multi-line(多行规则之前绝不能有空行)"
		"block-opening-brace-space-before": "always", // 要求在块的开大括号之前必须有一个空格或不能有空白符 "always(大括号前必须始终有一个空格)"|"never(左大括号之前绝不能有空格)"|"always-single-line(在单行块中的左大括号之前必须始终有一个空格)"|"never-single-line(在单行块中的左大括号之前绝不能有空格)"|"always-multi-line(在多行块中,左大括号之前必须始终有一个空格)"|"never-multi-line(多行块中的左大括号之前绝不能有空格)"
		"font-family-no-missing-generic-family-keyword": null, // 禁止在字体族名称列表中缺少通用字体族关键字
		"scss/at-import-partial-extension": null, // 解决不能使用 @import 引入 scss 文件
		"property-no-unknown": null, // 禁止未知的属性
		"no-empty-source": null, // 禁止空源码
		"selector-class-pattern": null, // 强制选择器类名的格式
		"value-no-vendor-prefix": null, // 关闭 vendor-prefix (为了解决多行省略 -webkit-box)
		"no-descending-specificity": null, // 不允许较低特异性的选择器出现在覆盖较高特异性的选择器
		"value-keyword-case": null, // 解决在 scss 中使用 v-bind 大写单词报错
		"selector-pseudo-class-no-unknown": [
			true,
			{
				ignorePseudoClasses: ["global", "v-deep", "deep"],
			},
		],
	},
	ignoreFiles: ["**/*.js", "**/*.jsx", "**/*.tsx", "**/*.ts"],
};

这么配置完之后,其实在已经生成的css文件中,没有按照规范书写的css,就会提示红色波浪线的错误信息了,我们创建了一个测试的css文件,如下:

在这里插入图片描述

在这里插入图片描述

5、package.json添加脚本命令

"scripts":{
    //...其他省略
    "lint:stylelint": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
}

运行脚本npm run lint:stylelint

在这里插入图片描述

如果出现如下图这种情况:报错:...powershell.exe -Command pnpm run lint:stylelint已经终止,退出代码:1。,请使用管理员模式打开vscode,原因是vscode执行终端受系统策略限制,可参考我之前的文章:pnpm : 无法加载文件 D:\Program Files\nvm_nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。。

在这里插入图片描述

记得配置这种个选项的时候,需要关闭所有vscode,否则重新打开会警告并关闭自身

在这里插入图片描述

执行命令后的最终效果,未能自动化处理的需要手动处理。

  • 会修复格式排版(比如缩进)
  • 关键字优先级(上一张图全部红色波浪线的问题就是关键字优先级排序)
    在这里插入图片描述

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

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

相关文章

国庆出行新伴侣:骨传导耳机分享,开启安全无忧的音乐旅行

随着国庆长假的脚步渐近&#xff0c;许多朋友已经开始规划自己的出游行程。无论是短途旅行还是长途跋涉&#xff0c;一款合适的耳机无疑是旅途中的良伴&#xff0c;特别是在户外活动频繁的假期&#xff0c;骨传导耳机因其独特的优点而成为了众多旅行者的首选。骨传导技术通过振…

心理咨询行业为何要有自己的知识付费小程序平台 心理咨询小程序搭建 集师saas知识付费小程序平台搭建

在快节奏的现代生活中&#xff0c;心理健康问题日益凸显&#xff0c;心理咨询行业迎来了前所未有的发展机遇。然而&#xff0c;传统咨询模式受限于地域、时间等因素&#xff0c;难以满足日益增长的多元化需求。在此背景下&#xff0c;搭建自己的知识付费小程序&#xff0c;成为…

python UNIT 3 选择与循环(2)

目录 1。循环的优化 经典优化分析&#xff1a; 未优化的代码&#xff1a; 细节分析&#xff1a; 优化后的代码&#xff1a; 优化的细节&#xff1a; 性能对比 优化的关键在于&#xff1a; 经典习题讲解&#xff1a;(紫色的解析请重点关注一下) 1。例三 个人代码解析…

Python发送邮件附件全攻略:从设置到发送!

Python发送邮件附件的详细步骤&#xff1f;如何利用Python发信&#xff1f; Python作为一种强大的编程语言&#xff0c;提供了丰富的库来帮助我们自动化这一过程。AokSend将详细介绍如何使用Python发送邮件附件&#xff0c;从基础设置到实际发送&#xff0c;带你一步步掌握这一…

【计算机网络】数据链路层理解

文章目录 一、引言二、MAC地址三、以太网四、交换机五、ARP与RARP1、ARP2、RARP 一、引言 数据链路&#xff0c;有时也指以太网、无线局域网等通信手段。数据链路层的协议定义了通过通信媒介互联的设备之间传输的规定。通信媒介包括双绞线电缆、同轴电缆、光纤、点播以及红外线…

值得去公司(完整榜单)

值得去公司 近日&#xff0c;脉脉出了一份《职得去公司》榜单&#xff1a; 前三名是 TAM&#xff08;老牌巨头百度日常掉队&#xff09;。 大家肯定好奇这个榜单怎么统计出来的。 这上面写的是根据「雇主指数」进行排名&#xff0c;广义的雇主指数包括了多个维度&#xff0c;包…

PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(三)

作为“贴代码”力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服&#xff01;下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里可以下载这个PasteForm的项目案例 目前“贴代码”对外使用PasteForm的项目有"贴Builder(PasteSpide…

Redis: 主从复制读写分离环境搭建

概述 Redis 的单机模式实际上就是在一个服务器上装了一个单节点的Redis通过简单的配置和简单的命令启动起来就可以使用这种搭建环境&#xff0c;不保证高可用的情况下&#xff0c;完全没有问题如果说你的项目必须要具备高可用&#xff0c;而且 Redis 也要提供更高的性能这个单…

java项目实现钉钉异常告警实时监控

最近有个小伙伴问我&#xff0c;我们的项目核心业务的地方总是有异常&#xff0c;虽然有打印日志&#xff0c;但不能立马通知我&#xff1b;所以今天我就教大家如何实现异常报警实时提醒 1.需要有钉钉 自己新建的企业用户 2.建一个群&#xff0c;需要有三人以上&#xff1b;…

yolov8/9/10模型在仪表盘、指针表检测中的应用【代码+数据集+python环境+训练/应用GUI系统】

可视化训练系统 可视化应用系统 yolov8/9/10模型在仪表盘、指针表检测中的应用【代码数据集python环境训练/应用GUI系统】 背景意义 随着科学技术的快速发展&#xff0c;机器视觉以及人工智能等技术逐渐从理论走向实践&#xff0c;并在各个领域得到广泛应用。机器视觉检测系统…

TCP CUBIC 曲线对 BIC 折线的拟合

bic 旨在对 reno 改进&#xff0c;用二分逼近替换线性遍历逼近&#xff0c;时间规模从 O ( W m a x ) O(W_{max}) O(Wmax​) 下降到 O ( ln ⁡ W m a x ) O(\ln {W_{max}}) O(lnWmax​)&#xff0c;这是本质&#xff0c;而 cubic 可以看作对 bic 的 bugfix&#xff0c;解除了…

新书速览|MySQL 9从入门到性能优化:视频教学版

《MySQL 9从入门到性能优化:视频教学版》 本书内容 MySQL是流行的关系数据库管理系统之一&#xff0c;由于其体积小、速度快、总体拥有成本低、开放源码等特点&#xff0c;一般中小型企业甚至大型互联网企业的应用开发都选择MySQL作为数据库。《MySQL 9从入门到性能优化:视频教…

【经验分享】自动化测试框架实战

一、什么是自动化测试框架 在了解什么是自动化测试框架之前&#xff0c;先了解一下什么叫框架&#xff1f;框架是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交互的方法;另一种定义认为&#xff0c;框架是可被应用开发者定制的应用骨架。前者是从应…

「iOS」——KVC

iOS学习 前言KVC模式KVC设值KVC取值KVC使用keyPathKVC处理异常处理不存在的key处理nil异常 KVC处理字典KVC高阶消息传递 总结 前言 对KVC模式的简单学习和总结。 KVC模式 KVC&#xff08;Key-Value Coding&#xff0c;键值编码&#xff09;是一种通过字符串来访问对象属性的机…

详解Linux文件系统

先来研究一下磁盘&#xff1a; LBA 磁头面数 所有磁头是共进退的。 每个扇区的大小假设为&#xff1a;512 磁盘的总容量&#xff1a;盘面*t*s*512 数组的下标范围&#xff1a;盘面*t*s LBA&#xff1a;xxx 假设xxx为LBA地址 xxx/1000h 及为h号盘面 xxx/100c 及c号磁道…

国产化框架PaddleYOLO结合Swanlab进行作物检测

1. 项目介绍 粮食安全&#xff0c;作为人类生存与发展的基石&#xff0c;始终是全球关注的焦点。它不仅仅关乎粮食的充足供应&#xff0c;更涉及粮食的质量安全、营养健康以及可持续生产等多个维度。在全球化、气候变化和资源环境约束日益加剧的背景下&#xff0c;如何确保粮食…

ComfyUI物品移除讲解

实现效果 一、下载插件 comfyui inpaint nodes 提供重绘功能节点&#xff0c;效果比自带的好很多 官方介绍 使用ComfyUI更好地进行修补的节点&#xff1a;用于SDXL&#xff0c;LaMa&#xff0c;MAT和各种其他工具的Foocus修补模型&#xff0c;用于预填充修补和去除区域。 插件…

Android调用科大讯飞语音转写 API以及解析踩坑之旅

需求 需要对本地音频文件&#xff0c;调用科大讯飞的api进行转文字&#xff0c;本来呢&#xff0c;以为很简单&#xff0c;结果坑不少。 语音转写 API 文档 坑1&#xff1a;解析 下载demo&#xff0c;代码也挺简单&#xff0c;放到idea中&#xff0c;替换一下key&#xff0c…

基于Springboot+Vue的网上书店(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…

用户体验测试——21条UX设计原则

根据心理学的研究和发展,对应理论不断被完善到用户体验设计领域,以下21条UX设计原则即为心理学在用户体验设计中的应用,在设计和测试中应用这些原则,可以提高用户体验质量特性,如下所示: 21条UX设计原则 有效性 特斯勒定律(最小复杂度定律) 这个定律也被称为“复杂性…