Stylelint
Stylelint 是被广泛采用的代码检查工具,主要用于样式文件。
安装
首先你需要安装 Stylelint。目前支持 Stylelint v16。
shell
npm install stylelint -D
shell
yarn add stylelint -D
shell
pnpm install stylelint -D
shell
bun install stylelint -d
配置
ESM
javascript
// stylelint.config.mjs
// or stylelint.config.js with "type": "module" in package.json
import { stylelint } from '@modyqyw/fabric';
// or
// import { stylelint } from '@modyqyw/fabric/stylelint';
export default stylelint();
CJS
javascript
// stylelint.config.cjs
// or stylelint.config.js without "type": "module" in package.json
const { stylelint } = require('@modyqyw/fabric');
// or
// const { stylelint } = require('@modyqyw/fabric/stylelint');
module.exports = stylelint();
CLI
更新你的 package.json
,增加 lint:stylelint
命令。
json
{
"scripts": {
"lint:stylelint": "stylelint \"./**/*.{css,scss,vue}\" --fix --cache --aei --ignore-path=.gitignore"
}
}
自定义
参数自定义
给导出的 stylelint
方法传参可以自定义配置,stylelint
方法接收两个参数。
第一个参数用于基本自定义,你可以传递 undefined
或对象。要明确地启用或禁用某一个配置,需要明确在传递的对象中设置 boolean 值。
目前支持以下配置:
- order:基于 stylelint-config-recess-order,对 CSS 属性排序,默认启用
- scss:基于 stylelint-scss,提供 SCSS 支持,安装 sass 后默认启用,否则默认禁用
- style:使用什么风格的配置,默认
'recommended'
,可选'standard'
javascript
// stylelint.config.mjs
// or stylelint.config.js with "type": "module" in package.json
import { hasScss, stylelint } from '@modyqyw/fabric';
export default stylelint({
// 基于 stylelint-config-recess-order
// 默认为 true,即启用
order: true,
// 基于 stylelint-scss
// 安装 sass 后默认启用,否则默认禁用
scss: hasScss,
// 使用什么风格的配置
// 默认 'recommended'
// 可选 'standard'
style: 'recommended',
});
潜在冲突
- stylelint-config-recess-order 可能与 prettier-plugin-css-order 冲突,默认禁用 prettier-plugin-css-order。如果你想启用 prettier-plugin-css-order,见 Prettier 章节自定义部分,并禁用 stylelint-config-recess-order。
第二个参数用于更进一步的自定义,你可以传递一个对象,用于覆盖生成的配置。
javascript
// stylelint.config.mjs
// or stylelint.config.js with "type": "module" in package.json
import { stylelint } from '@modyqyw/fabric';
export default stylelint(undefined, {
rules: {
// 需要自定义的规则
},
});
如果你希望在默认配置上增加自定义配置(比如支持 LESS),你可以像下面这样做(需要自行安装相应的依赖):
javascript
// stylelint.config.mjs
// or stylelint.config.js with "type": "module" in package.json
import { stylelint } from '@modyqyw/fabric';
const defaultConfig = stylelint();
export default {
...defaultConfig,
rules: {
...defaultConfig.rules,
// 需要自定义的规则
},
};
潜在冲突
配置默认支持 Vue、TailwindCSS 和 Module CSS。在自定义规则时,请小心调整,避免覆盖规则导致报错。
整合
VSC
先安装 对应的 Stylelint 插件。
jsonc
{
// 禁用内置的 CSS 检查
"css.validate": false,
// 禁用内置的 LESS 检查
"less.validate": false,
// 禁用内置的 SCSS 检查
"scss.validate": false,
// 启用 Stylelint 代码片段的语言
"stylelint.snippet": ["css", "scss", "vue"],
// Stylelint 检查的语言
"stylelint.validate": ["css", "scss", "vue"],
// CSS、SCSS 手动保存后 Stylelint 自动修复
"[css][scss]": {
"editor.codeActionsOnSave": {
"source.fixAll.stylelint": "explicit",
},
},
// Vue 手动保存后 Stylelint 自动修复
"[vue]": {
"editor.codeActionsOnSave": {
"source.fixAll.stylelint": "explicit",
},
},
}
WebStorm
WebStorm 自带 Stylelint,可参考 VSC 自行调整。
lint-staged
如果你使用该库提供的 lint-staged 配置,请查看 lint-staged 章节。
如果你没有使用该库提供的 lint-staged 配置,可以参考以下配置。
javascript
// lint-staged.config.mjs
// or lint-staged.config.js with "type": "module" in package.json
export default {
'*.{css,scss,vue}': 'stylelint --fix --cache --aei --ignore-path=.gitignore',
};