Prettier for Ruby 正式发布 v1.0 版本 🎉
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
自 2018 年 7 月以来,历经 1500 次提交和 50 个版本迭代后,我们非常高兴地宣布 Prettier for Ruby 的 v1.0 版本正式发布。本篇博文将简要介绍该插件的工作原理、设计理念以及未来规划。
工作原理
Prettier for Ruby 通过 Prettier 的插件 API 实现功能。其 parse 函数通过生成 Ruby 进程并调用 Ruby 原生解析器(即 Ripper)来工作。在追踪所有节点类型、注释、位置信息及其他元数据后,它会将构建好的抽象语法树(AST)返回给 Prettier 进程。最后将该 AST 转换为 Prettier 的中间表示(称为 Doc),再由 Prettier 执行格式化输出。
设计理念
Ruby 插件力求兼容多种代码风格。例如,无论您选择带括号还是不带括号的方法调用方式,插件都会尊重您的选择。但在 Ruby 社区存在强烈分歧的领域,我们提供了以下配置选项:
-
rubyArrayLiteral- 默认将简单字符串/符号数组转换为字面量语法(分别对应%w和%i)。禁用此选项则保留原始格式。 -
rubyHashLabel- 为偏好 hash rocket 语法的开发者设计。默认会统一处理哈希键(即全部使用标签语法或全部使用 hash rocket)。禁用后所有哈希键将强制使用 hash rocket(=>)表示。 -
rubyModifier- 为不习惯if/unless/while/until修饰符语法的用户提供此选项。 -
rubySingleQuote- 默认在适用场景使用单引号,其余情况用双引号。此选项可反转该行为。 -
rubyToProc- 允许将array.map { |elem| elem.to_s }简化为array.map(&:to_s)。默认禁用,因为这会改变代码块元数(arity),可能破坏反射逻辑。
该插件同时支持 Prettier 核心配置选项:
-
printWidth- 默认 80 字符,可按需增加行宽限制。 -
tabWidth- 默认缩进 2 字符。 -
trailingComma- 默认"none",设为"all"可为跨多行的数组/哈希字面量和参数列表添加尾逗号。
整体风格遵循 Ruby 风格指南(即 Rubocop 默认配置)。使用 Prettier 时,建议关闭 Rubocop 的 Formatting/* 规则以提升 lint 速度。
后续规划
接下来我们将重点推进:
现在,您可以通过遵循 README 中的说明 在命令行中试用此插件。如果发现任何错误,请务必报告,我们会努力确保问题出现后立即解决。如果您有兴趣,也欢迎通过贡献指南参与项目贡献。
