☰
从 Puppet 档案看 Remote In Tech 远程公司目录的数据结构与技术实现
2026/10/4 19:03:34 网站建设 项目流程
  • 数据集

【免费下载链接】remote-jobs

Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies

项目地址:https://gitcode.com/GitHub_Trending/re/remote-jobs
点击查看免费下载

remoteintech.company 是社区维护的远程友好科技公司目录,其数据全部以 Markdown 档案文件的形式存放在src/companies/目录中。本文以该目录下的 Puppet 档案 为标本,完整拆解一份公司档案的 frontmatter 元数据与正文结构、各字段在站点中的渲染与分类逻辑,并对照仓库源码说明这些数据如何被 Eleventy 构建系统消费,帮助你掌握"新增/解析/维护一份远程公司档案"的完整链路。

档案文件概览:Puppet 的定位与核心信息

puppet.md记录的是 Puppet——一家聚焦 IT 自动化领域的公司。档案将其归类为:

  • 远程策略(remote_policy):remote-friendly(远程友好),即部分团队、部分岗位支持远程协作;
  • 地区(region):europe,档案正文补充其远程团队覆盖 US、APAC、EMEA 三大区域;
  • 公司规模(company_size):large,正文给出具体人数 400+;
  • 技术栈(technologies):devops与ruby。

这些字段并非自由文本,而是仓库中定义好的枚举值,站点据此自动生成标签、分类页与筛选入口,属于"数据驱动"的目录体系。

Frontmatter 元数据逐字段解析

puppet.md的头部 frontmatter 是整份档案的数据骨架,原文如下:

--- title: "Puppet" slug: puppet website: https://puppet.com/ careers_url: https://puppet.com/company/careers region: europe remote_policy: remote-friendly company_size: large technologies: - devops - ruby addedAt: 2015-10-13 updatedAt: 2018-04-16 ---

各字段含义与仓库约束如下:

字段取值(本档案)说明与约束
titlePuppet公司显示名称,站点<h1>与页面标题直接使用
slugpuppet档案文件必须命名为src/companies/{slug}.md,二者需一致(见 CONTRIBUTING.md)
websitehttps://puppet.com/公司官网
careers_urlhttps://puppet.com/company/careers公司自有招聘页;若缺少该字段,布局会退化为使用website作为主按钮
regioneurope枚举值:worldwide、americas、europe、americas-europe、asia-pacific、other
remote_policyremote-friendly枚举值:fully-remote、remote-first、hybrid、remote-friendly
company_sizelarge枚举值:tiny(1-10)、small(11-50)、medium(51-200)、large(201-1000)、enterprise(1000+)
technologiesdevops、ruby数组,取值来自 labels.js 中tech枚举表
addedAt/updatedAt2015-10-13/2018-04-16维护者管理的日期字段,updatedAt会渲染在档案页页脚

从 CONTRIBUTING.md 可知,addedAt与updatedAt由维护者管理,社区 PR 中不应自行填写这两个字段。

正文五段式结构:公司档案的标准模板

puppet.md正文严格遵循目录规定的##小节结构。其中## Company blurb、## Remote status、## How to apply为必填小节(见 CONTRIBUTING.md),## Company size、## Region、## Company technologies、## Office locations为可选但常用的补充小节。逐段解读如下。

Company blurb:一句话定位公司业务

原文描述 Puppet 是 "the leader in IT automation",核心业务是帮助系统管理员自动化配置与管理机器及其上运行的软件,让企业在物理机、虚拟机、本地与云上"快速、可重复地变更并自动强制执行系统与设备的一致性"。

这段 blurb 不仅是页面正文,还被 companies.11tydata.js 自动提取为 SEO meta description:构建时会正则匹配## Company blurb标题后的段落,去除 Markdown 链接、`*_`` 等符号、合并换行与多余空格,并截断至约 155 个字符(优先在句号处截断)。因此 blurb 写得越精炼,站点的搜索摘要质量越高。

Company size:规模标签的来源

正文给出400+。该数值与 frontmatter 的company_size: large相辅相成——前者是正文的事实陈述,后者用于站点的筛选标签与分类。从 labels.js 可见,large对应展示文案 "201-1000 employees"。

Remote status:远程政策的判定依据

这是目录最关键的字段之一。Puppet 的声明是:团队分布全球,是否远程取决于所申请的具体团队,且要求候选人具备与远程团队协作的先前经验。

从 CONTRIBUTING.md 可知目录的收录门槛:"公司必须提供真实的远程工作机会(有薪的、可远程完成的全职或按小时岗位)"。因此Remote status小节是社区审查的核心证据,不能虚写。

Region:区域范围的事实说明

frontmatter 写europe,正文补充实际远程覆盖为US、APAC 和 EMEA。可见 frontmatter 的region是面向分类的"主区域",正文则提供更完整的边界说明。europe在 labels.js 中展示为 "Europe",并会链接到/browse/europe/区域聚合页。

Company technologies:技术栈标签

frontmatter 中technologies声明devops与ruby,正文则说公司技术栈还包括 Clojure 与更多语言。仓库只对technologies枚举表中存在的值生成标签(labels.js 的tech表含javascript、python、go、devops、kubernetes等 25 项),所以正文中的技术细节与标签系统相互补充。

Office locations:混合办公背景交代

档案记录 Puppet 主办公室位于波特兰市中心 Block 300 大楼,并在贝尔法斯特、伦敦、捷克设有办公室——这解释了"远程友好而非完全远程"的政策定位:公司有实体办公室,但支持分布式协作。

How to apply:申请入口规范

正文指向公司的官方招聘页与招聘 FAQ。CONTRIBUTING.md 特别强调:careers_url必须指向公司自己的招聘页面,而非出售服务的页面;同时目录不接受中介、培训营或自由职业平台代为列出的岗位。

仓库源码如何消费这份档案

布局渲染:company.njk

company.njk 是公司档案的专用布局(由src/companies/companies.json的"layout": "company"指定)。其渲染逻辑与 frontmatter 字段一一对应:

  • buttonUrl = careers_url or website:优先展示 "Apply Now" 按钮,缺失careers_url时降级为 "Visit Website"(Puppet 档案两者兼备);
  • region与remote_policy渲染为可点击的 tag 标签,分别链接到/browse/{region}/与/browse/{remote_policy}/分类页;
  • technologies遍历生成 Tech Stack 标签区;
  • updatedAt通过formatDate('MMMM D, YYYY')过滤器(dates.js)格式化为页面页脚的 "Last updated" 时间。

集合与分组:collections.js

collections.js 是档案数据的组织引擎:

  • getAllCompanies按title字母序排序所有档案;
  • getCompaniesByRegion依据region字段分组(Puppet 会进入 Europe 组);
  • getCompaniesByTech依据technologies数组分组(Puppet 同时进入 DevOps 与 Ruby 两组);
  • getRecentCompanies按addedAt倒序取最近 12 家新收录公司。

标签数据流:从 frontmatter 到浏览页

collections.js 中的getCompanyTags会遍历全部档案,按technology、region、remote-policy三类聚合出标签页数据,标签展示名统一取自 labels.js(如europe → Europe、remote-friendly → Remote Friendly),并统计每家公司的收录数量。这意味着 Puppet 档案一旦更新region或remote_policy,其所属的浏览分组会自动重建,无需手工维护任何中间文件。

维护这份档案的实战要点

结合 CONTRIBUTING.md 与源码,维护 Puppet 这类档案的核心规范可归纳为:

  1. 文件名即 slug:档案必须位于src/companies/puppet.md,与slug: puppet一致;
  2. 必填三段:Company blurb、Remote status、How to apply缺一不可,PR 会被 Validate Company Profiles 自动检查(仓库中的校验机器人会阻止合并不符合格式的提交);
  3. 枚举值约束:region、remote_policy、company_size、technologies必须落在 labels.js 与 CONTRIBUTING.md 给出的取值集合内,否则标签无法正确生成;
  4. 日期由维护者管理:社区贡献不应携带addedAt/updatedAt;
  5. 提交前验证:在仓库根目录执行npm run build,确认档案能被 Eleventy 正常构建后提交 PR。

小结

puppet.md是 remoteintech.company 目录中一份典型的"远程友好 + 大型企业 + DevOps 技术栈"档案:它以一段精准的 blurb 定义业务,用枚举化 frontmatter 完成分类,再由 company.njk 与 collections.js 自动渲染出页面、标签与分组。理解这份档案,等于掌握了该目录"数据 → 标签 → 浏览页"全链路的读写范式——无论是想新增一家公司,还是审核既有档案是否合规,都可以参照这套结构快速上手。

  • 数据集

【免费下载链接】remote-jobs

Source for remoteintech.company — a community-maintained directory of remote-friendly tech companies

项目地址:https://gitcode.com/GitHub_Trending/re/remote-jobs
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询