- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
本篇文章以 tldr 仓库中的 pages.bg/common/npx.md 保加利亚语别名页为核心,系统讲解 tldr 中"别名页(alias page)"的文档结构、多语言模板机制,以及别名背后的真实命令
npm exec的用法;读完你既能理解 tldr 为什么用一页替代一页地维护npx这类别名,也能直接上手用npx/npm exec执行任意 npm 包中的可执行文件,还能掌握set-alias-page.py脚本批量生成与同步别名页的原理。
一、这是一张什么样的文档:npx别名页全貌
在 tldr 仓库中,npx并不是一份独立的、长篇的命令速查表,而是一个别名页(alias page)。它存在的唯一目的,是告诉读者"npx就是npm exec的另一个名字",然后把读者引导到原命令的完整文档。位于 pages.bg/common/npx.md 的保加利亚语版本完整内容如下:
# npx > Тази команда е псевдоним на `npm exec`. - Виж документацията за оригиналната команда: `tldr npm exec`逐行解读:
| 行 | 内容 | 语义 |
|---|---|---|
# npx | 页面标题 | 与命令名严格一致(由 set-page-title.py 校验) |
> Тази команда е псевдоним на \npm exec`.| 概述行(以>开头) | 说明这是npm exec` 的别名 | ||
- Виж документацията за оригиналната команда: | 示例描述 | "查看原命令的文档" |
`tldr npm exec` | 示例命令 | 告诉用户用tldr npm exec查看真正详尽的文档 |
对应地,pages/common/npx.md 的英文原版为:
# npx > This command is an alias of `npm exec`. - View documentation for the original command: `tldr npm exec`可以看到保加利亚语版本与英文版在结构上一一对应,这正是 tldr 对翻译页面的硬性要求:结构必须与英文原页完全一致(详见后文 PR 检查机制)。
二、别名页背后的标准模板:多语言骨架如何定义
tldr 并没有为每一种语言分别发明别名页格式,而是由一份权威模板统一约束: contributing-guides/translation-templates/alias-pages.md。该文件中收录了 en、ar、bg、bn、bs、ca、cs、da、de、el、es、fa、fi、fr、hi、id、it、ja、ko、lo、ml、nb、ne、nl、no、pl、pt_BR、pt_PT、ro、ru、si、sr、sv、sw、ta、th、tr、uk、uz、zh、zh_TW 共 40 余种语言的别名页模板。
以英文模板为基准,其标准格式为:
# example > This command is an alias of `example`. - View documentation for the original command: `tldr example`保加利亚语(bg)模板对应为:
# example > Тази команда е псевдоним на `example`. - Виж документацията за оригиналната команда: `tldr example`对比 pages.bg/common/npx.md 可以看出:npx页就是把模板中的三个example占位符分别替换为——标题npx、原命令npm exec、文档命令npm exec。整个别名页刻意保持极简,不承载任何示例命令,因为所有细节都归原命令页负责,避免同一命令的文档在两处重复、漂移。
仓库中还有大量同类别名页,例如 pages.bg/common/arch.md:
# arch > Тази команда е псевдоним на `uname --machine`. - Виж документацията за оригиналната команда: `tldr uname`它把arch指向uname --machine,但文档命令指向的是tldr uname(注意:文档命令与原命令可以不同,指向信息量更大的页面)。这也是别名页的三个要素——标题、原命令、文档命令彼此独立的原因。
三、原命令npm exec:npx背后的真实能力
理解了npx是别名,下一步就是看懂它指向的原命令。tldr 为npm exec维护了完整的速查页 pages/common/npm-exec.md,其核心定义是 "Execute binaries fromnpmpackages"(执行 npm 包中的可执行文件),完整内容如下:
# npm exec > Execute binaries from `npm` packages. > More information: <https://docs.npmjs.com/cli/npm-exec/>. - Execute the command from a local or remote `npm` package: `npm {{[x|exec]}} {{command}} {{argument1 argument2 ...}}` - Specify the package explicitly (useful if multiple commands with the same name exist): `npm {{[x|exec]}} --package {{package}} {{command}}` - Run a command if it exists in the current path or in `node_modules/.bin`: `npm {{[x|exec]}} --no-install {{command}} {{argument1 argument2 ...}}` - Execute a specific command, suppressing any output from `npm` itself: `npm {{[x|exec]}} --quiet {{command}} {{argument1 argument2 ...}}` - Display help: `npm {{[x|exec]}} --help`这里 tldr 使用{{[x|exec]}}的语法标注x与exec两种写法等价——这正是npx与npm exec之间别名关系的官方体现。围绕这条主线,npm exec的核心参数可以归纳为:
| 参数 | 作用 | 说明 |
|---|---|---|
{{command}} | 要执行的命令 | 来自本地或远程 npm 包 |
argument1 argument2 ... | 传给命令的参数 | 直接透传给目标可执行程序 |
--package {{package}} | 显式指定包 | 同名命令存在多个来源时消除歧义 |
--no-install | 禁止自动安装 | 仅当命令已存在于$PATH或node_modules/.bin时可用,避免触发网络下载 |
--quiet | 静默模式 | 抑制 npm 自身的输出日志,只保留命令真实输出 |
--help | 显示帮助 | 查看npm exec的全部选项 |
实际使用示例
由于npx与npm exec完全等价,以下用npx演示最典型的三类场景:
临时执行远端包的命令(最常用,无需提前
npm install):npx create-react-app my-app等价写法:
npm exec create-react-app my-app。显式指定包来源(本地存在多个同名二进制时):
npx --package eslint eslint .仅运行本地已安装的命令,不联网安装(离线环境或 CI 中):
npx --no-install prettier --check .如果命令既不在
$PATH也不在node_modules/.bin中,--no-install会直接报错,这正好用于验证"依赖是否真的装齐了"。
四、别名页是怎么被创建和同步的:set-alias-page.py源码解读
tldr 提供了专门的维护脚本 scripts/set-alias-page.py,它承担两项任务:交互式创建单个别名页,以及把英文别名页批量同步到所有已翻译语言。
4.1 占位符替换的核心逻辑
脚本从模板文件读取各语言模板后,通过generate_alias_page_content()完成替换(见 scripts/set-alias-page.py):
template_command = "example" result = template_content.replace(template_command, page_content.title, 1) result = result.replace(template_command, page_content.original_command, 1) result = result.replace(template_command, page_content.documentation_command)即按顺序把模板中的第一个example换成页面标题、第二个换成原命令、剩余的全部换成文档命令。模板读取则由 scripts/_common.py 中的get_templates()完成,它解析alias-pages.md中每个### 语言代码块下的 markdown 模板,最终得到一个{语言: 模板字符串}映射。
4.2 别名页的判定与批量同步
get_alias_command_in_page()(见 scripts/set-alias-page.py)负责判断某个页面是否真的是别名页:它要求页面恰好包含两行"命令行"(一行是> ... alias of ...概述,一行是`tldr ...`命令),且存在标题;同时提取出原命令与文档命令。
get_english_alias_pages()(见 scripts/set-alias-page.py)遍历pages/common/、pages/linux/等平台目录,找出所有符合判定条件的英文别名页;main()中的--sync分支(见 scripts/set-alias-page.py)随后把这些别名页同步到每个翻译目录。因此像npx.md这样的别名页,一旦英文版发生变化,运行:
python3 scripts/set-alias-page.py -S即可自动更新所有语言的别名页;只想更新保加利亚语时使用:
python3 scripts/set-alias-page.py -S -l bg新增单个别名页则用交互式向导(以npx为例):
python3 scripts/set-alias-page.py -p common/npx脚本会依次询问页面标题、原命令、文档命令,并在确认后按照 alias-pages.md 中的 bg 模板生成# npx、> Тази команда е псевдоним на ...、`tldr ...`三要素。
五、质量保障:别名页如何通过自动化检查
别名页看似简单,却受到仓库多道自动化检查的约束:
结构校验:
npx这类别名页的概述行与命令行必须严格匹配模板。set-alias-page.py在同步时会对现有页面做"剥离化"比较——把标题、反引号内容全部归一化后与模板比对(见 scripts/set-alias-page.py),非标准别名页会被判定为"不是别名页"并忽略。PR 同步检查:CI 中运行的 scripts/check-pr.sh 会对每个改动页面执行
check_outdated_page()(见 scripts/check-pr.sh):翻译页的命令数量、命令内容(剥离占位符后)与概述行数量都必须与英文页一致,否则报 "is outdated"。这保证了 pages.bg/common/npx.md 这样的翻译页不会落后于英文原页。语言相关 lint 规则:翻译页由
tldr-lint校验,scripts/test-tldr-lint.sh 针对不同语言配置了不同的忽略规则(如阿拉伯语、日语等需要额外检查排版规则,而英文页全量检查)。
此外 CONTRIBUTING.md 明确要求新页面提交遵循规范命名(如docker-container-rm: add alias page),并指向 alias-pages.md 作为别名页的唯一模板来源。
六、从一页别名看 tldr 的文档设计哲学
npx别名页是一个小而美的案例,集中体现了 tldr 的三条核心设计原则:
- 单一信息源:别名本身不重复原命令的任何示例,全部细节收敛到
npm exec页面,避免同一命令多份文档漂移、失同步。 - 可机械校验:别名页的极简结构(标题 + 概述行 + 一个
tldr引导命令)使得脚本可以精确识别、批量生成、逐语言同步,CI 也能逐字段比对。 - 多语言平等:保加利亚语等 40 余种语言共享同一套模板骨架,翻译只需要替换文本,结构永不走样。
结语
从 pages.bg/common/npx.md 出发,本文完整梳理了 tldr 别名页的文档结构、别名页多语言模板、npx指向的原命令 npm exec 速查页 及其参数实战、set-alias-page.py 的生成同步原理,以及 check-pr.sh 的自动化质量保障。当你在终端里敲下tldr npx,看到"Тази команда е псевдоним наnpm exec"或英文版 "This command is an alias ofnpm exec" 时,就知道这不是一份偷懒的文档,而是整个 tldr 体系中保证别名命令文档准确、一致、可维护的关键一环。
- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
相关推荐
tldr 中的 uname26 别名页:解读 `setarch uname26` 命令别名与 tldr 别名文档机制
tldr 中的 uname26 别名页:解读 setarch uname26 命令别名与 tldr 别名文档机制 导读 uname26 是 Linux 下 se
文档教程知识库tldr 仓库中的 fdfind 别名页:命令别名文档机制与 fd 命令速查
tldr 仓库中的 fdfind 别名页:命令别名文档机制与 fd 命令速查 导读 本文围绕 fdfind.md https://link.gitcode.co
文档教程知识库tldr 别名页解析:从保加利亚语 chdir 页面读懂 tldr 的别名命令文档机制
tldr 别名页解析:从保加利亚语 chdir 页面读懂 tldr 的别名命令文档机制 chdir 是 cd 命令的别名,在 tldr 仓库中通过一种被称为"别
文档教程知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考