写点什么

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

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

关注

评论

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

鸿蒙应用示例:Java与ArkTS中的方法重载及数值类型对比

zhongcx

鸿蒙应用示例:实现文本高亮与自动换行

zhongcx

鸿蒙开发案例:实现数字华容道游戏

zhongcx

鸿蒙应用示例:API功能集成示例及注意事项

zhongcx

鸿蒙应用示例:工作中常用的日期时间处理方法

zhongcx

鸿蒙应用示例:ArkTS UI框架中的文本缩进技巧

zhongcx

鸿蒙开发案例:一个简单的扫雷游戏应用

zhongcx

【论文速读】| AutoSafeCoder:通过静态分析和模糊测试保障LLM代码生成安全的多智能体框架

云起无垠

鸿蒙应用示例:DevEco Studio实用技巧

zhongcx

鸿蒙应用示例:舒尔特方格游戏实现

zhongcx

Apache Doris 2.0.15 版本发布

SelectDB

数据库 搜索引擎 数据仓库 大数据 开源 实时分析

鸿蒙应用示例:应用开发中的动态获取属性与调用方法技巧

zhongcx

鸿蒙应用示例:镂空效果实现教程

zhongcx

首届中国室内AI设计大赛启动,美学与科技助力,助力产业新增长!

极客天地

国内首个专业领域知识增强服务框架 KAG 技术报告,助力大模型落地垂直领域

可信AI进展

人工智能

让Kimi像人类思考的“Kimi探索版“已开启灰度内测!GPT-o1贡献者之一宣布离职|AI日报

可信AI进展

鸿蒙应用示例:ArkTS中设置颜色透明度与颜色渐变方案探讨

zhongcx

鸿蒙应用示例:ArkTS中实现一键置灰功能

zhongcx

NocoBase 与 Appsmith:哪个低代码平台更适合你?

NocoBase

低代码 开发工具 无代码

曲面LED屏:视觉革新与使用优势的深入分析

Dylan

技术 视觉 LED display LED显示屏 市场

线上事故风险解读之数据库篇

巧手打字通

MySQL 数据库 架构 后端 经验总结

MES系统如何实现生产过程的全流程追溯

万界星空科技

产品管理 mes 万界星空科技 产品追溯 车间管理

别分管理与实践,质量体系是一个整体

BY林子

质量管理 软件质量 质量体系

云栖实录 | 智能运维年度重磅发布及大模型实践解读

阿里云大数据AI技术

运维 云原生 gitops 智能运维 大模型

公开课 | 金九银十,测试开发面试秘籍大公开!

测试人

软件测试

实测9款AI文件助手!原来最好用的并不是全网称赞的谷歌NotebookLM...

可信AI进展

人工智能、

鸿蒙应用示例:单例工具类实现防抖动策略

zhongcx

鸿蒙应用示例: flexGrow 与 layoutWeight 布局属性比较

zhongcx

鸿蒙应用示例:DevEco Testing 工具的常用功能及使用场景

zhongcx

鸿蒙开发案例:实现一个带AI的井字游戏(Tic Tac Toe)

zhongcx

鸿蒙开发案例:HarmonyOS NEXT语法实现2048

zhongcx

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