unified

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

unified-infer-git-meta

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.

Install

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

npm:

npm install unified-infer-git-meta

Use

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'

main()

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

  console.log(file.data)
  console.log(String(file))
}

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">
  <head>
    <meta charset="utf-8">
    <title>readme</title>
    <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">
  </head>

API

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.

options.locales

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

options.limit

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

options.authorRest

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

options.format

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.

Contribute

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.

License

MIT © Titus Wormer