Stylelint

中文翻译文档(稍晚于官方)https://cloud.tencent.com/developer/doc/1267

官方:https://stylelint.io/

stylelint是什么

A mighty, modern CSS linter and fixer that helps you avoid errors and enforce consistent conventions in your stylesheets.
一款强大的,现代的css语法检查和纠错工具,它可以帮助开发者在编写样式文件时避免错误,同时它还可以强迫开发者们形成统一的开发规范。

简而言之,stylelint是个css语法检查器,它由PostCSS提供。

PostCSS就像Babel的css版,会把css转成ast(抽象语法树,可以理解为一个描述代码内容的层层嵌套的对象),然后用各种插件处理它,最后再转回css,可以靠它实现自动添加样式的浏览器前缀、使用未来的CSS4语法等。
通过解析ast,PostCSS可以支持scss,less等css预处理语言,因此,stylelint也同样支持。

本文将介绍stylelint在webpack中以plugin形式的使用,和在vscode中以扩展的形式的使用,其他情况可参考stylelint官网辅助工具常见问题

配置

核心

不同场景下stylelint的使用都需要一个配置对象(configuration object)

如同babel和eslint,它们都用cosmiconfig加载配置,所以你的配置对象可以写在:

  • package.json的stylelint属性中,如:
{
  "extends": "stylelint-config-standard",
  "rules":{
    "string-quotes": "single",
    // ...
  },
  // ...
}
  • .stylelintrc文件中;
  • 传出对象的stylelint.config.js文件中。

它们会在stylelint被运行时自动查到并使用。

对象中包含以下可配置项(一般了解rules和extends即可):

rules

rules是一个对象,键是规则名,值是规则配置,它决定了stylelint校验代码的规则,默认情况下,没有任何规则是开启的。查看所有rules

extends

extends是一个字符串或者字符串的数组,字符串是引入的扩展的模块名或者扩展文件的地址。
一个扩展相当于一组规则,rules中的规则会覆盖和extends中重复的规则,extends是数组时,扩展中重复的规则后者会覆盖前者。
对于不想开启的extends中的规则,我们可以在rules中将该规则的值设为null。
官方推荐的两个扩展:

plugins

插件,用法和extends类似,可以用来去支持验证一些特殊的情况,这里不做过多介绍。查看常见plugins

processors

可以用来验证非层叠样式表文件的css样式,比如html文件中的style标签,markdown文件中的代码块,JavaScript中的字符串。查看常见processors

ignoreFiles

可以用来忽略特定文件,但如果想有效地忽略大量文件,应使用.stylelintignore文件。

defaultSeverity

对所有规则验证的默认严重级别,可选"warning"(警告)和"error"(报错),默认都是报错。

在webpack中使用

先安装stylelint-webpack-plugin

注意:该插件要求Node至少v6.9.0,webpack至少v4.0.0。

npm install stylelint-webpack-plugin --save-dev

在webpack配置中:

// webpack.config.js
const StyleLintPlugin = require('stylelint-webpack-plugin');

module.exports = {
  // ...
  plugins: [
    new StyleLintPlugin(options),
  ],
  // ...
}

stylelint-webpack-plugin会将这里的options直接传给stylelint.lint方法,下面只列几个较实用的设置项,其他可参考The stylelint Node API

  • fix:为true时,stylelint会自动修复能修复的错误,不能修复才报错。
  • syntax:指定语法规则,可选scss/less/sugarss,不指定时默认读文件后缀识别。
  • cache:缓存上次检查结果,再次运行只检查脏值,可以提高检查效率。

stylelint.lint调用时默认会读取.stylelintrc文件或者package.json中stylelint的配置,因此不必刻意设置stylelint-webpack-plugin的options,把配置内容写在对应地方即可。

在vscode中使用

安装:在vscode中搜扩展stylelint,安装数最多的那个就是。

安装后建议关闭vscode内置的样式验证,在设置中添加:

{
  "css.validate":false,
  "less.validate":false,
  "scss.validate":false
}

强烈建议在项目中添加配置文件来使用stylelint,但扩展的设置也可以用:

stylelint.enable:ture/false,是否启用。
stylelint.configOverrides:设置stylelint的configOverrides选项,会覆盖已有配置。
stylelint.config:设置stylelint的config选项,如果设置了编辑器就不读项目的配置文件了。

**`stylelint`是一个强大的CSS代码检查工具,它可以帮助开发者确保代码的一致性并遵循最佳实践**。下面将深入探讨如何配置`stylelint`以满足不同的需求: 1. **配置文件格式** - **JSON**: `.stylelintrc.json`是最常见的配置格式之一,它可以包含从简单的规则列表到复杂的配置结构。这种格式适合初学者和需要基本配置的场景。 - **YML**: YAML 文件(如`.stylelintrc.yml`或`stylelint.config.yml`)提供了一种更灵活的配置方式,特别是在处理更复杂或分层的配置结构时。 - **JS/TS**: JavaScript或TypeScript文件(如`.stylelintrc.js`或`stylelint.config.js`)提供了最大的灵活性和复杂度,允许执行代码以动态生成配置。 2. **配置属性** - **rules**: 这是`stylelint`配置中最重要的部分,指定哪些规则应该被应用来检查CSS代码。每个规则都可以被设置为"warning"、"error",或者完全禁用。 - **ignoreFiles**: 在项目中,有些文件可能不需要进行`stylelint`检查,例如编译后的CSS文件或第三方库。`ignoreFiles`选项允许你指定一个正则表达式,以忽略与该模式匹配的文件。 - **extends**: 通过`extends`属性,可以轻松地继承预定义的规则集,如`stylelint-config-standard`。这可以减少配置的复杂性,同时保持代码一致性。 3. **自定义配置** - **custom syntax**: Stylelint 不仅支持 CSS,还支持 SCSS、Sass、Less 和 PostCSS,以及 CSS-in-JS 和 Vue 单文件组件 (SFC) 的语法检查。这为使用不同技术和框架的开发者提供了极大的灵活性。 - **custom rules**: 除了内置的规则外,`stylelint`还允许你创建自定义规则。这对于团队中有特定编码标准的情况非常有用,可以确保所有成员都遵循相同的指导原则。 4. **编辑器集成** - **自动修复**: 大多数现代编辑器,如VSCode,都支持`stylelint`的集成。通过配置编辑器,可以在保存文件时自动修复`stylelint`发现的问题。这不仅提高了代码质量,还节省了手动修复错误的时间。 5. **工作流集成** - **CI/CD**: 在持续集成/持续部署(CI/CD)工作流程中集成`stylelint`可确保代码库中的CSS代码始终保持一致和干净。借助CI工具(如GitHub Actions、Travis CI等),可以自动化`stylelint`检查并阻止不符合规定的代码被合并进主分支。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值