9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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:002587
用户头像

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

关注

评论

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

软件测试|Python matplotlib教程(二)

霍格沃兹测试开发学社

软件测试|教你用Python操作Word文档(二)

霍格沃兹测试开发学社

亚马逊云服务器成了我的首选服务器

StackOverflow

云服务器 亚马逊云

苹果Mac强大的远程管理工具:Royal TSX for Mac激活版 支持M1

彩云

Royal TSX 远程连接管理

一般的仿真软件需要什么配置的电脑?

思茂信息

仿真软件 仿真技术 仿真建模 仿真模拟

全面解析独立服务器:如何选择最适合你的方案?

一只扑棱蛾子

独立服务器

软件测试|带你了解Python正则表达式模块(一)

霍格沃兹测试开发学社

融云荣登「2023 年度 PaaS 企业排行榜」

融云 RongCloud

互联网 PaaS 通信 企业 即时通讯

调用API接口获取淘宝关键词商品数据:详细指南与代码实践

Noah

软件测试|教你使用Python实现五子棋游戏(一)

霍格沃兹测试开发学社

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_bf375d

软件测试|教你使用Python快速绘制酷炫词云图

霍格沃兹测试开发学社

软件测试|教你用Python 操作Word文档(一)

霍格沃兹测试开发学社

Util应用框架快速入门(二)- Web Api 快速入门

何镇汐

开源 后端 软件开发

如何规划并新建大数据平台的独立生产域?5步走

奇点云

奇点云 DataSimba 对象体系

在 LangChain 尝试了 N 种可能后,我发现了分块的奥义!

Zilliz

Milvus langchain rag chunking

理论+实践详解最热的LLM应用框架LangChain

华为云开发者联盟

人工智能 华为云 华为云ModelArts 华为云开发者联盟 LLM

选择困难症的我,最终选择了Amazon EC2 云服务器

不叫猫先生

云服务器 Amazon EC2 云服务器

Util应用框架快速入门(三)- UI 快速入门

何镇汐

开源 后端 开发软件

FomePay 充值 ChatGPT Plus 详细教程

月满楼

ChatGPT ChatGPT4 chatgpt app chatgpt api

轻量应用服务器到底香在哪?

格致君的planB

数字化 亚马逊云科技 轻量应用服务器

软件测试|Python绘图神器matplotlib教程(三)

霍格沃兹测试开发学社

软件测试|Python数据可视化神器——pyecharts教程(四)

霍格沃兹测试开发学社

工赋开发者社区 | 智能物联网:概念、体系架构与关键技术

工赋开发者社区

软件测试/校招推荐丨鼎捷软件股份有限公司岗位开放

测试人

软件测试

潮玩宇宙APP系统开发

薇電13242772558

NFT

软件测试|matplotlib中文不显示的解决方案

霍格沃兹测试开发学社

软件测试|一文教你学会Python文件 I/O 操作

霍格沃兹测试开发学社

外贸网站优化常用流程和一些常识

九凌网络

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