写点什么

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

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

关注

评论

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

JPEX事件对于香港加密货币发展的影响

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

好用的图书阅读器 OmniReader Pro激活中文版

胖墩儿不胖y

Mac软件 图书阅读工具 图书阅读

Java21上手体验-分代ZGC和虚拟线程 | 京东云技术团队

京东科技开发者

Java ZGC 虚拟线程 企业号10月PK榜

深入理解树状数组 | 京东物流技术团队

京东科技开发者

bit #数据结构 企业号10月PK榜 树状数组

启动!中交集团携手用友搭建海外人力资源数智化平台

用友BIP

中企出海 数智人力

cad设计绘图软件:AutoCAD 2024最新版中文

mac大玩家j

CAD绘图 CAD设计 cad cad工具

API接口安全运营研究

Noah

API接口文档 API 安全 API接口安全

超越React,JS代码体积减少90%!它为何是2023年最好的Web框架?

互联网工科生

Vue React Web框架 Astro

第一个程序:HelloWorld——IDEA 使用

小齐写代码

小程序等轻应用技术是不是对企业有价值?

Onegun

小程序 轻应用

中国机械总院张红新:强化集团级数据治理 业财融合助力企业降本增效

用友BIP

业财融合 2023全球商业创新大会

亚马逊云科技2023柏林峰会主题演讲总结

亚马逊云科技 (Amazon Web Services)

Amazon AIGC

2023 KiCon Asia 11月12日 深圳见!

华秋电子

kicad

泰山众筹APP开发,泰山众筹商城开发

V\TG【ch3nguang】

可视大盘+健康分机制,火山引擎DataLeap为企业降低资源优化门槛!

字节跳动数据平台

大数据 数据治理 成本治理 企业号9月PK榜

利用美国服务器增加线上业务的客户人群

一只扑棱蛾子

服务器 美国服务器

【数据库审计】2023年数据库审计厂家汇总

行云管家

数据库 数据库审计 等保合规

百万架构师亲码的亿级流量下的分布式限流解决方案

小小怪下士

Java 程序员 高并发 秒杀

鲲鹏DevKit 23.0:流水线中便捷迭代鲲鹏版本,迁移、开发、调优无缝衔接

彭飞

开源生态建设,正成为智能世界发展的关键

新消费日报

WorkPlus即时通讯app打通业务与生态,实现高效管理与协同

BeeWorks

Lightroom Classic 2022 for mac(Lrc中文版) 11.5完整激活版

mac

LRC2022 图像处理软件 苹果mac Windows软件 Lightroom Classic 2022

用友全球司库十问(四)|企业如何实现融资债券数据信息的实时监控?

用友BIP

全球司库

安全高效的政企内部通讯解决方案WorkPlus IM平台

BeeWorks

WorkPlus定制化的局域网会议软件,提供安全稳定的会议体验

BeeWorks

云管理平台基本功能有哪些?适配国产化平台吗?

行云管家

云计算 信创 国产化 云管平台 云管理

小游戏的来龙去脉及入局方式

Onegun

小游戏 小游戏开发

WorkPlus国产化即时通讯工具:安全可靠的国内沟通利器

BeeWorks

MQ技术比较

周晓宁

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