Project: unifiedjs/unified-infer-git-meta

Package: unified-infer-git-meta@1.1.0

  1. Dependents: 0
  2. unified plugin to infer some meta from Git
  1. unified 174
  2. plugin 137
  3. rehype 85
  4. meta 9
  5. unified-plugin 6


Build Coverage Downloads Sponsors Backers Chat

unified plugin to infer file metadata from Git. This plugin sets file.data.meta.{published,modified,author}. This is mostly useful with rehype-meta.


This package is ESM only: Node 12+ is needed to use it and it must be imported instead of required.


npm install unified-infer-git-meta


import {read} from 'to-vfile'
import {unified} from 'unified'
import remarkParse from 'remark-parse'
import unifiedInferGitMeta from 'unified-infer-git-meta'
import remarkRehype from 'remark-rehype'
import rehypeDocument from 'rehype-document'
import rehypeMeta from 'rehype-meta'
import rehypeFormat from 'rehype-format'
import rehypeStringify from 'rehype-stringify'


async function main() {
  const file = await unified()
    .use(rehypeMeta, {
      // Published, modified are only added if these two are also defined:
      og: true,
      type: 'article'
    .process(await read('readme.md'))


Now, running our module with node example.js, yields:

  meta: {
    published: new Date('2021-09-09T11:12:34.000Z'),
    modified: new Date('2021-09-09T11:23:45.000Z'),
    author: 'Titus Wormer'
<!doctype html>
<html lang="en">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="author" content="Titus Wormer">
    <meta property="og:type" content="article">
    <meta property="article:published_time" content="2021-09-09T11:12:34.000Z">
    <meta property="article:modified_time" content="2021-09-09T11:23:45.000Z">


This package exports a plugin as the default export.

unified().use(unifiedInferGitMeta, options?)

Plugin to infer some meta from Git.

This plugin sets file.data.meta.published to the date a file was first committed, file.data.meta.modified to the date a file was last committed, and file.data.meta.author to an abbreviated list of top authors of the file.


Locale(s) to use to join authors and sort their names (string or string[], default: 'en').


Maximum number of authors to include (number, default: 3). Set to -1 to not limit authors.


Text to use to label more authors when abbreviating (string, default: 'others').


Alternative format function to use ((authors: string[]) => string). Is given a list of abbreviated author names. If the list of authors had to be abbreviated, the last author is instead replaced by authorRest. Set limit: -1 to receive all author names.


See contributing.md in unifiedjs/.github for ways to get started. See support.md for ways to get help.

This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.


MIT © Titus Wormer