阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

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

关注

评论

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

Flink Unaligned Checkpoint 在 Shopee 的优化和实践

Apache Flink

大数据 flink 实时计算

基于 Flink & Paimon 实现 Streaming Warehouse 数据一致性管理

Apache Flink

大数据 flink 实时计算

面试 JVM 一问三不知?看这篇就够

java易二三

Java 编程 程序员 计算机

如何在 React 18 中使用 useSyncExternalStore

汽车之家客户端前端团队

js React ts

使用免费MES系统的成功经验

万界星空科技

开源 经验分享 MES系统

软件测试 | MySQL复制的安装配置

测吧(北京)科技有限公司

测试

go 语言实战入门案例之猜数字

timerring

Go

董事长高见|越老越青春,近两百岁的它靠什么?

新消费日报

北京信息化协会信息技术应用创新工作委员会一行到开放原子开源基金会交流学习

开放原子开源基金会

开源 开放原子开源基金

🔥对线面试官-线程入门第一课

派大星

线程 Java 面试题

如何正确使用 ThreadLocal,你真的用对了吗? | 京东云技术团队

京东科技开发者

内存泄露 ThreadLocal 源码剖析 企业号 8 月 PK 榜

华为开发者大会2023即将召开 主题演讲多平台线上直播

最新动态

晴数智慧推出MagicData-CLAM高质量SFT数据集,助力大模型实现更优效果

极客天地

清华大学朱文武教授团队最新著作《图表征学习:迈向动态开放环境》重磅上市!

博文视点Broadview

AB实验遇到用户不均匀怎么办?—— vivo游戏中心业务实践经验分享

vivo互联网技术

AB实验 分层抽样 用户不均匀 事前用户分层

突破传统监测模式:业务状态监控HM的新思路 | 京东云技术团队

京东科技开发者

架构设计 业务监控 企业号 8 月 PK 榜 监测模式

大模型驱动软件2.0

汽车之家客户端前端团队

大模型

Next.js 13.4版本更新内容~

汽车之家客户端前端团队

SSR next 服务端预渲染

可视化分析30天免费,瓴羊Quick BI助力企业转型

流量猫猫头

瓴羊QuickBI,助您加速企业转型,免费试用

巷子

海外直播APP源码的开发给商家们带来了什么

山东布谷网络科技

App 社交娱乐 海外直播源码

软件测试 | DROP TABLE命令并不回收以前的相关访问授权

测吧(北京)科技有限公司

软件测试 | REVOKE命令的漏洞

测吧(北京)科技有限公司

测试

软件测试 | MySQL Cluster架构

测吧(北京)科技有限公司

测试

腾讯云 ES 重磅推出,一站式全托管的自治索引终于来了!

腾讯云大数据

ES

瓴羊QuickBI在国内bi厂商中名列前茅,并展现出色的表现。

流量猫猫头

低代码开发工具到底是给“谁”用的?

优秀

低代码开发工具

go 语言实战入门案例之实现Socks5

timerring

Go

现代化税收征管的“四精”目标 科学技术发挥关键作用

用友BIP

税务管理

关于自动限流的思考 | 京东云技术团队

京东科技开发者

限流 企业号 8 月 PK 榜 自动限流

go 语言实战入门案例之命令行排版词典

timerring

Go

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