Medusa 文档写作规范指南:Vale 与 ESLint 规则体系全解析

发布时间:2026/11/5 0:05:23

Medusa 文档写作规范指南:Vale 与 ESLint 规则体系全解析 Medusa 文档写作规范指南Vale 与 ESLint 规则体系全解析【免费下载链接】medusaThe worlds most flexible commerce platform for agents and developers项目地址: https://gitcode.com/GitHub_Trending/me/medusa本篇指南围绕 Medusa 开源仓库中的文档规范文件 vale-rules.md 展开系统讲解 Medusa 官方文档写作必须遵守的 Vale 与 ESLint 规则涵盖人称、语态、术语、标点、代码格式与句子长度等全部维度。读完本篇读者可以掌握 Medusa 文档的完整写作约束了解每条规则背后的自动化检查实现规则文件位于 www/vale/styles/docs并能够在写作前按照官方清单完成自查写出能够通过 CI 校验、风格统一、便于搜索引擎与 Agent 解析的文档内容。规则体系概览Vale 与 lint:content 双通道校验Medusa 文档采用两套自动化工具共同保证文本质量Vale基于www/vale/目录下的规则集运行负责自然语言层面的风格检查例如人称、被动语态、句子长度、术语替换等。运行脚本见 run-vale.sh它接收应用路径与告警级别参数将www/apps/$1下的内容目录拼成文件列表后调用vale --minAlertLevel执行检查。ESLintlint:content负责代码与格式层面的约束例如代码行长、MDX 代码块语言标签等。lint:content脚本定义在 www/package.json 中通过turbo run lint:content触发对所有文档应用book、user-guide、cloud 等生效。两条规则要求所有文档必须全部通过违反任意一条都会导致文档无法合入。下面逐条拆解每条规则的具体内容、正反例与底层实现。第一人称禁令只用你不用我们规则严禁使用第一人称复数first-person plural。文档正文中不得出现we、us、lets、our等词。原因在于文档面向单个读者使用你或祈使句能够给出更直接、更易执行的指引。官方给出的正反例❌ We recommend using workflows for all mutations. ❌ Lets create a workflow. ❌ Our platform supports... ❌ Us, weve, were ✅ Use workflows for all mutations. ✅ Create a workflow. ✅ The platform supports... ✅ You can configure...唯一例外是US美国这一国家缩写。底层实现见 We.yml它通过existence类型规则以ignorecase: true匹配we、weve、were、us、lets并在exceptions中放行USOur.yml 负责拦截our与ours。此外 FirstPerson.yml 还拦截单数第一人称I、Id、Ill、Im、Ive、me、my、mine三者配合确保全文不出现任何第一人称视角。被动语态改写成主动规则Vale 对被动语态发出告警必须改写为主动语态。需要特别留意can be 过去分词结构应改写为you can 动词。❌ The workflow is created by calling createWorkflow. ❌ Products are fetched from the database. ❌ The configuration has been updated. ❌ Custom domains can be configured in the settings. ✅ Call createWorkflow to create a workflow. ✅ The service fetches products from the database. ✅ Update the configuration. ✅ You can configure custom domains in the settings.实现层面Passive.yml 使用raw字段匹配am|are|were|being|is|been|was|be等系动词后紧跟过去分词的组合tokens中内置了从awoken到written的数百个不规则动词过去分词覆盖 built、broken、made、run、set、shown 等常见词以降低漏检率。术语规范Backend 与 API 的边界规则指代 Medusa 服务器/应用本身时必须使用 backend严禁用 API 作为 Medusa backend 的同义词。❌ Serve your Medusa API. ❌ Connect the storefront to the Medusa API. ❌ The Medusa API handles the requests. ✅ Serve your Medusa backend. ✅ Connect the storefront to the Medusa backend. ✅ The Medusa backend handles the requests.同时规则也明确了边界当特指某条 API 路由或端点时API 依然是正确用法例如 call the Products API、the Admin API。也就是说backend指代服务本身API指代具体的接口资源二者不可混用。这一区分与 Medusa 的分层架构一致packages/medusa/src/api目录存放全部 HTTP 路由实现而服务端整体由packages/medusa/src中的模块、加载器、策略等共同构成。Medusa Cloud 命名根据语境二选一规则任何情况下都不要写 Medusa Cloud根据语境使用简化形式将产品/平台作为名词指代时使用Medusa将平台作为地点或服务指代例如部署到该平台时使用Cloud。❌ Medusa Cloud allows you to deploy your application. ✅ Medusa allows you to deploy your application. ❌ Deploy your project to Medusa Cloud. ✅ Deploy your project to Cloud. ❌ The Medusa Cloud dashboard shows your deployments. ✅ The Cloud dashboard shows your deployments.这条规则的意图是避免冗长的品牌全称同时让产品本身与托管部署地两种语义在行文中自然区分。拉丁缩写不用 e.g.写 for example规则严禁使用e.g.,一律改写为for example。❌ Use a workflow step, e.g., to call an external API. ✅ Use a workflow step, for example, to call an external API.类似的简写处理思路在规则集中保持一致文档面向国际开发者与翻译流程使用完整英文单词比拉丁缩写更容易理解和本地化。破折号禁止使用 Em Dash规则严禁使用破折号em dash即—。通过改写句子结构来避免通常可以用逗号、括号或重新断句替代❌ The workflow runs the steps — in order — and compensates on failure. ✅ The workflow runs the steps in order and compensates on failure. ❌ Use createStep — not direct service calls — for mutations. ✅ Use createStep, not direct service calls, for mutations.问题词汇表删掉空话副词规则Vale 会标记以下问题词汇写作时应避免使用通常直接删除即可。AvoidUse insteadsimply(remove it)just(remove it)easy(remove it)straightforward(remove it)obviously(remove it)basically(remove it)这些词大多属于填充性副词删去后句子更精确、更可信。与之配套的还有 Wordiness.yml 中的替换规则例如in order to改写为to、due to the fact that改写为because、has the ability to改写为can、whether or not改写为whetherTerms.yml 则规定e-commerce一律改写为ecommerce。另外 YouCan.yml 会针对you can发出告警提示考虑用更直接的说法与前面多用祈使句的风格取向呼应。代码行长限制单行不超过 64 字符规则代码行必须小于等于 64 个字符由lint:content强制检查。该规则适用于 MDX 文件内的代码块长行必须手动换行// ❌ Too long import { createWorkflow, WorkflowResponse, createStep, StepResponse } from medusajs/framework/workflows-sdk // ✅ Break imports import { createWorkflow, WorkflowResponse, createStep, StepResponse, } from medusajs/framework/workflows-sdk这一限制保证了文档代码块在窄屏渲染与复制场景下不出现横向滚动也让行内 diff 更易读。Medusa 文档中大量涉及 workflows-sdk 的示例代码导入语句较长时尤其需要注意拆分。语言标签非 JSX 一律用 ts规则Vale 对 TypeScript 代码块使用tsx 发出告警应使用ts❌ tsx ✅ ts仅当内容是包含 JSX 的 React 组件文件时才允许使用tsx。底层实现见 [TypeScript.yml](https://link.gitcode.com/i/6a03cf93deed7f4c74e72a7a95a98eea)它以 raw 作用域匹配 tsx标记。Medusa 仓库中的源码大量使用.tsx 扩展名例如 packages/admin/dashboard/src 下的 React 组件但文档示例中展示纯逻辑代码时应去掉 JSX 语义的标签。URL 格式正文禁用裸链接规则正文文字中严禁出现裸 URL必须使用 Markdown 链接格式。❌ Visit https://docs.medusajs.com for more information. ✅ Visit the [Medusa documentation](https://docs.medusajs.com) for more information.裸 URL 在渲染、翻译和链接检查流程中都容易失效统一使用label可以让读者从链接文字预判目标内容也便于后续的链接有效性校验。句子长度控制在 30 词以内规则保持句子简洁Vale 建议单句不超过约 30 个单词。过长的复合句需要拆分。❌ The Product Module is a standalone package that provides product management features and integrates with the Cart Module to allow adding products to carts, which then connects to the Order Module for order management. ✅ The Product Module is a standalone package that provides product management features. It integrates with the Cart Module to allow adding products to carts.底层实现见 SentenceLength.yml采用occurrence类型规则max: 30以\b(\w)\b统计句内单词数并给出 suggestion 级别提示。较长的术语如 Module 名称会计入单词数因此写作时要主动把长句拆成多句。仓库中 www/vale/styles/docs 还包含 ComplexWords、Ordinal、Contractions、OxfordComma、Spacing、Acronyms、Gender 等更多风格规则共同构成完整的英文文档风格检查集。提交前自查清单在写作时脑内运行校验vale-rules.md 最后给出了一份写作前的自查清单官方建议在落笔写任何正文前逐项核对出现 we、us、lets、our 时替换为 you 或祈使句出现被动语态包括 can be configured、is created 等时改写为主动you can configure、call X to create出现 simply、just、easy 等词时删除代码行超过 64 字符时换行裸 URL 用label包裹非 JSX 的 TypeScript 代码块把tsx 改为ts用 Medusa API 指代 backend 时替换为 Medusa backend出现 Medusa Cloud 时替换为 Medusa名词形式或 Cloud地点/服务形式出现e.g.,时替换为for example出现破折号—时改写句子去除将这份清单内化为写作习惯可以在提交文档前提前消除绝大多数 CI 告警。若需在本地验证可在 www 目录通过yarn lint:content定义见 www/package.json运行 ESLint 内容检查并使用 run-vale.sh 指定应用路径与告警级别运行 Vale规则词汇表可查看 accept.txt 与 reject.txt前者放行 Qovery、Netlify、s3、vite 等专有名词的拼写告警。小结Medusa 的文档写作规范以 Vale 规则集 lint:content双通道落地覆盖人称、语态、术语、标点、措辞、代码格式与句子长度七个层面。每条规则都不是孤立的建议而是在 www/vale/styles/docs 中有对应 YAML 实现的强制约束并由 CI 自动校验。遵循这套规范写出的文档不仅风格统一、易于阅读也更容易被翻译、搜索引擎与 LLM 准确解析与引用。【免费下载链接】medusaThe worlds most flexible commerce platform for agents and developers项目地址: https://gitcode.com/GitHub_Trending/me/medusa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/4 9:22:10

AI率过高如何解决?2026年10款主流降AI率工具终极亲测指南

现在毕业生答辩前的头号难关,早就从“查重率超标”变成“AIGC率踩红线”啦!各大高校检测系统一升级,AI痕迹太明显被标红,那可是答辩路上的“致命关卡”,半点儿都马虎不得。 为啥自己改来改去还是过不了?因…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 13:55:19

GD32E10x官方例程入门:从GPIO点灯到串口调试

简介:这份GD32E10x系列官方例程面向嵌入式硬件与单片机开发者,基于ARM Cortex-M3内核,汇集兆易创新GD32E10x的示例代码,适合工业控制、消费电子、通信设备等场景的学习、验证与二次开发。压缩包共935个文件,约11.16MB&…

2026/11/5 13:50:18

基于Django的运维平台实战:资产、发布、巡检、告警一体化

简介:这份资源是一套基于Django框架开发的运维平台源码,面向具备Python基础、希望了解Web运维系统实现思路的开发者与运维人员,可用于学习主机管理、服务监控、日志查看、任务调度、权限控制、资源统计、脚本执行与故障告警等常见运维模块的落…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑