Stylelint
个人理解上 stylelint 是一个css代码linter的工具,可以结合nodejs和cli进行使用。继csslinter等linter之后,具有插件化的功能,同postcss的插件,webpack等都可以较好的集成进去。
如果说js的代码检测和规范工具在jslint,jshint之后,你肯定听说过eslint。同eslint对js代码校验规则一样,stylelint也有一套类似的处理系统.
update in 12/15
干脆直接fork了vue-templates for webpack,直接fork这个项目,在本地创了一个stylelint的分支,修改meta.js, 增加了stylelint
的相关配置.(使用的是现在最新的vue-cli的webpack模板,具体版本地址1.2.7
)
所以现在只需要在本地type下面的内容
/* vue init username/repo your-projectName*/
vue init EliazTray/webpack#stylelint webpack-stylelint
出现以下的内容,都勾选即可
然后在安装完依赖之后
// 就可以对所有的.vue文件进行处理了(支持.vue里面的lang)
npm run lintcss:vue
这个时候应该会有错误,显示Expected empty line before rule rule-empty-line-before
// 类似eslint中添加--fix
npm run lintcss:vue -- --fix
就可以发现这些这个错误被自动fix掉了(下文也说了有些错误是不支持自动fix掉的)
如果想要试试效果,可以将.vue文件中随意一处的color使用大写的16进制表示.使用–fix就可以发现大写被自动fix转换成小写了(是因为继承了standard
中的规则)
写的挺小白文了,有疑问的话,可以交流,:)
TL;DR
1.使用vue-cli
初始化一个工程
2.npm i stylelint stylelint-config-standard -D
3.在工程的根目录下建立stylelint.config.js
文件,将以下内容复制进去。
module.exports = {
"extends": "stylelint-config-standard",
"rules": {
}
}
4.打开package.json在scripts中插入
"scripts": {
// 表示对所有的.vue文件使用自定义的syntax去parse,自定义的syntax module就是postcss-html,并且使用--fix自动修复选项,去修复一些可以修复的规则。
"lintcss:fix": "stylelint **/*.vue --custom-syntax postcss-html --fix"
}
5.控制台执行 npm run lintcss:fix
,在控制台看输出,能够修改的都会被修改(比如大写的16进制颜色会被转成小写),不能被修改的就需要手动修改问题,根据提示修改即可.
安装
建议是本地安装,每个项目都重新安装一遍。
npm i stylelint -D
因为不是全局安装(-g
安装),所以一般调用的话需要借助npm scripts
,如果这个没玩过,先去查阅相关资料.
// in package.json
···
···
{
"scripts": {
"lintcss": "stylelint **/*.css -s scss"
}
}
···
先说一个大的前提,很重要.
- stylelint自动忽略
node_modules
和bower_modules
下的linter校验. - stylelint对文件名为css,.scss, .sass等具有后缀的文件自动采用相关的syntax去解析,比如css是使用css,scss使用scss.如果你想要对.css文件采用scss的语法去linter,就如上面你说些,使用
-s
或者--syntax
的选项去重新指定加载的syntax
. - stylelint 不能以文件夹作为stdin(不能src/,需要指定为src/*.scss),也没有指定后缀名(eslint中–ext的功能)。如在eslint中使用
eslint -ext .js,.vue
就可以对指定类型的文件进行linter
规则
一般需要在项目根目录建立一个有关stylelint的配置文件
- a
stylelint
property in package.json - a
.stylelintrc
file - a
stylelint.config.js
file exporting a JS object
对比eslint,eslint有.eslintrc.js
bebel用的就是.babelrc
所以stylelint我习惯上使用在根目录建立一个stylelint.config.js
的文件,以module.exports的方式,输出一些配置规则。
看下我工程中的配置。下面的stylelint-config-standard
,stylelint-order
需要安装。
module.exports = {
"extends": "stylelint-config-standard",
"plugins": [
"stylelint-order"
],
"rules": {
"order/order": [
"declarations",
"custom-properties",
"dollar-variables",
"rules",
"at-rules"
],
····
····
}
}
一般extends
是去继承一个规则,一般使用的是stylelint-config-standard
这个库,这个库是官方推荐,也是很多大公司,比如facebook,google就是使用这套css规则.
这里我使用了一个排序的插件,等会再说。是针对css属性的位置书写生效的.
在编辑器中使用stylelint
刚刚写的都是基本的配置和一个介绍,是保证你能够在感知一个stylelint是一个什么东西的前提下写的。
如果想要在编辑器中使用stylelint,如vscode
,就很简单,
1.在插件库中查找stylelint 2.根据插件的提示,修改一些用户设置。但我测试,在我现在的版本是不需要这些配置都可以生效的。 3.想在特殊的语言块中使用stylelint,比如vue文件中,加上如下的设置即可.
// 用户设置文件中. 文件->首选项->用户设置
// 让stylelint在vue组件中支持.
"stylelint.additionalDocumentSelectors": [
"vue"
]
stylelint会根据根目录中stylelint.config.js
中的规则设置,去linter所有的.vue文件,提示相关的语法错误.
这样在coding 的时候就已经具有了自动提示错误的功能了.
自动修正
想象一下,eslint有–fix,同理stylelint也有–fix选项,不过stylelint的–fix只能修复一些问题,像大括号前面必须要有空格这些是不会自动帮你fix掉的,需要手动fix(官方文档说的也很清楚)
那这些都是对.css或者.scss,或者.sss等文件进行–fix,但是如果一个特殊的文件,如果也需要stylelint去linter,需要怎么做,官方文档说的也很明白,使用pre-processor,先使用预处理器对对应的文件进行–custom-syntax的parse处理。
强烈建议阅读
看了相关的issue,大概上(从今天算)下个版本(vue-cli下的webpack的新模板)应该会集成stylelint的相关设置。
所以对vue文件的处理是
// package.json
{
"scripts": {
// 表示对所有的.vue文件使用自定义的syntax去parse,自定义的syntax module就是postcss-html,并且使用--fix自动修复选项,去修复一些可以修复的规则。
"lintcss:fix": "stylelint **/*.vue --custom-syntax postcss-html --fix"
}
}
这个postcss-html
模块前几天已经被built in stylelint,也就是已经内建了,所以安装stylelint的时候不需要安装postcss-html,这个postcss-html的作用就是解析非标准的语法,比如markdown和vue之类的,
使用相关插件
在继承stylelint-config-standard
的之后,已经具有一些css规则,但是比如我会对css的抒写属性的顺序有要求,这个时候需要启用对css属性顺序的检测(属性顺序由自己定义),主要是使用一个叫做stylelint-order
的插件,具体的配置如下。
先 npm i stylelint-order -D
(已经安装stylelint
,stylelint-config-standard
的前提)
// 我项目工程的配置,order是使用style-order的推荐属性顺序。
module.exports = {
"extends": "stylelint-config-standard",
"plugins": [
"stylelint-order"
],
"rules": {
"order/order": [
"declarations",
"custom-properties",
"dollar-variables",
"rules",
"at-rules"
],
"order/properties-order": [
"position",
"top",
"right",
"bottom",
"left",
"float",
...
...
]
}
}
这样我的css,scss抒写的属性规则就按照我的规则设置那样,顺序出现错误会帮助提示出来,然后使用–fix的时候自动校正为我设置的顺序规则。
大概就是这样了,挺有用的一个linter工具.还有结合在postcss或者webpack中具体读者可以自己研究一下啦~
今天的文章Stylelint in .vue分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15413.html