NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Facebook 使用 Stylelint 以期保证 CSS 代码质量

  • 2016-06-22
  • 本文字数:1013 字

    阅读完需:约 3 分钟

近日,来自 Facebook 的开发者 Juriy Zaytsev 发布文章称,他们更换了CSS Linter 工具,采用了基于 PostCSS Stylelint 作为新的 Linter 工具,以期保证 CSS 代码质量。

上千名工程师,多条不同产品线,庞大代码库,日渐增加的新特性……种种特点加在一起,给 Facebook 的代码质量管理带来了独特的挑战。而如何保证上千份不停变换的 CSS 文件质量,对于 Facebook 来说,也是非常头疼的问题。Facebook 为了解决这个问题,采用了 Code Review、代码样式规范、重构以及自建的 CSS Linter 等手段。

然而,Facebook 对之前自建的 CSS Linter 并不满意。该 Linter 是基于正则表达式来对 CSS 进行约束的,因此,所设定的每一个检测规则都需再去设定相应的匹配规则,并且要去遍历整个文件进行检测,这不仅难以维护,而且性能很差。

CSS 本身是一门语言,把它当做纯文本文件,采用正则表达式来处理并不是一个好选择。而换种思路,采用抽象语法树的方式来构建一个解析器,则会在性能上有比较不错的提升。

此时,基于 PostCSS 的 Stylelint 走进了 Facebook 的视野。Stylelint 提供了完整的抽象语法树的访问方式,因此,使用者可以快速访问具体的代码节点、传入一些基本函数。这可以大大增强检测规则可读性和可维护性,正是 Facebook 所想要的。

Facebook 理所当然地选择了 Stylelint,并在具体的使用过程中对 Stylelint 进行了完善,针对旧 Linter 的痛点添加了功能。

Facebook 所采用的 Stylelint 内置规则包括: declaration-no-important selector-no-universal , 以及 selector-class-pattern 。Stylelint 还可以添加自定义规则,具体的添加方法可以参考 built-in plugin mechanism 。同时,Facebook 也为 Stylelint 贡献了一些规则插件

Stylelint 尚有不完善的地方,例如没有提供自动格式化与修正功能,而人工修正会浪费开发者大量的时间。因此,Facebook 正着手为其添加自动格式化与修正功能,这将为 Stylelint 用户带来极大的便利。

同时,Facebook 选择了 Jest 框架进行单元测试,来检测当前所处的环境是否是 CSS 文件。

Juriy Zaytsev 提到,换一个靠谱的 CSS Linter 工具只是保证高质量的 CSS 的代码的第一步,Facebook 还打算添加更多的自定义的规则,设法达到使用规则的最佳实践以及制定统一的代码规范。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-06-22 19:002121
用户头像

发布了 28 篇内容, 共 16.7 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
发现更多内容

vue必会面试题+答案

buchila11

Vue 3

架构实战营作业 M01

Shawn Liu

#架构实战营

绿色篮子APP开发|绿色篮子软件系统开发

教你几招HASH表查找的方法

华为云开发者联盟

数据结构 哈希表 hash 哈希函数

架构训练营-模块一-作业

姑射仙人

#架构实战营

企业协作通过什么软件可以提高工作效率?

万事ONES

项目管理 敏捷开发 ONES 协同办公

模块一作业

张文龙

#架构实战营

动手实操丨基于随机森林算法进行硬盘故障预测

华为云开发者联盟

机器学习 数据分析 modelarts 随机森林算法 硬盘故障

天空秘境APP开发|天空秘境软件系统开发

架构实战营模块一作业

maybe

前端vue面试题,附答案

buchila11

Vue

慧心购系统开发|慧心购软件APP开发

金牛生态APP开发|金牛生态软件系统开发

爬虫入门到放弃01:一句话概括什么是爬虫

叫我阿柒啊

Python 爬虫

一文带你读懂CNCF Landscape

焱融科技

分布式 云原生 高性能 云存储 cncf

HarmonyOS开发者的喜讯——华为认证来啦!

科技汇

Go 学习笔记之 常量数据类型

架构精进之路

Go 语言 7月日更

中东矿业系统开发|中东矿业软件APP开发

Camtasia实用技巧之光标效果

淋雨

视频剪辑 专业录屏 Camtaisa

拼拼有礼APP开发|拼拼有礼软件系统开发

一千零一次飞升APP系统开发内容

2021能源发展极速前进,可视化赋能行业高效运作

一只数据鲸鱼

数据可视化 3D可视化 智慧能源 能源管理 光伏发电

MindSpore模型精度调优实战:如何更快定位精度问题

华为云开发者联盟

模型 mindspore 精度 模型精度调优 静态特征

一亩金田APP开发|一亩金田软件系统开发

毕业设计-学生管理系统架构设计

sophiahuxh

哈哈生活系统开发|哈哈生活软件APP开发

成为全栈式数据管控平台,CloudQuery 1.4 概述

BinTools图尔兹

可视化 数据安全 OpenAPI 数据迁移 数据库管理

你用哪些软件和方式来提高工作效率?

万事ONES

项目管理 ONES 敏捷管理

KeilC51基础 添加与删除中文时出现问号

万里无云万里天

IoT 嵌入式 KeilC51

图的应用——最短路径

若尘

数据结构 最短路径

小萌猫短视频系统APP开发详情

Facebook使用Stylelint以期保证CSS代码质量_Meta_韩婷_InfoQ精选文章