0

stylelint 规范你的 css

 2 years ago
source link: https://segmentfault.com/a/1190000040985397
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

TL;DR:

👉 stylelint 简介

👉 stylelint 配置

👉 stylelint 原理

stylelint 简介

A mighty, modern linter that helps you avoid errors and enforce conventions in your styles.

一个强大、现代的 linter 帮助团队避免规则错误,统一代码风格。和 eslint 类似可以继承开源社区的 config、自定义配置、写个性化的 rules 。

stylelint 配置

可按照官方引导 user-guide/get-started 进行配置。笔者目前公司项目采用的是 vue + scss + ts 实现的,这里主要会介绍 vue 和 scss 相关的配置。

stylelint 版本和依赖存在兼容性问题,下面依赖版本经过验证

stylelint 插件提供扩展规则,不提供预设配置。(我只提供配置,用不用是你的事)。命名规范为 stylelint-xxxx

我们项目使用到了 scss 预处理器,需要利用 stylelint-config-recommended-scss 做 scss 规则检查。

stylelint-scss 提供了 n 多条规则,stylelint-config-recommended-scss 内开启了部分配置。

面试的时候我们经常会被问到 css 的重排和重绘,坦白讲写代码的时候并没有太多人关心这个。 让 linter 来帮助我们自动修复多香。stylelint-config-recess-order (属性配置 + stylelint-order插件)可以帮我们实现

stylelint 与 eslint 类似,都与 Prettier 规则有冲突,stylelint-config-prettier 可以解决这些冲突,stylelint-prettier 插件优化 Prettier 的执行时机

可以是 .stylelintrc 或 .stylelintrc.js 或 stylelint.config.cjs 配置文件。推荐使用 .js 文件的形式方便自定义。

module.exports = {
  /* 继承公共配置 */
  "extends":[
    "stylelint-config-recommended-scss",
    "stylelint-config-recess-order",
    "stylelint-prettier/recommended"
  ],
  /* 扩展 stylelint 原生rules 的种类 */
  "plugins": ["stylelint-prettier"],
  /* 项目个性化的规则 */
   rules: {
    "selector-pseudo-element-no-unknown": [
      true,
      {
        ignorePseudoElements: ["v-deep"],
      }
    ],
    "prettier/prettier": true,
    "number-leading-zero": "always",
  }
}

之前搞不懂为啥有些工具配置能支持 monorepo 项目组织形式,读官方文档发现 cosmiconfig 库帮忙做到了这件事情。

Stylelint uses cosmiconfig to find and load your configuration object.

项目配置应结合 lint-stage 、git-hooks 对执行时机和范围做优化。本文只讲手动执行。

package.json:

 "lint:style": "stylelint 'src/**/*.{vue,htm,html,css,scss}' --fix"

在终端执行 npm run lint:style 看下代码的变化吧。

stylelint 原理

stylelint 通过使用 PostCSS API 来分析 CSS 的语法,实现样式的检查。

postcss 是 css 的 编译器。它和 babel 的功能设计类似, 有 parse -> transform -> generater 三个关键环节。开发者可以通过 parse 后的 AST 结构实现自定义的 lint 规则。

stylelint-config-demo


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK