Skip to content

Waxolunist/metalsmith-writemetadata

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 

metalsmith-writemetadata

A metalsmith plugin to write the metadata excerpted from the files to the filesystem as json files.

Installation

$ npm install metalsmith-writemetadata

Usage

var writemetadata = require('metalsmith-writemetadata');

Metalsmith(__dirname)
.use(writemetadata());

Parameter

pattern

Metalsmith(__dirname)
.use(writemetadata({
  pattern: ['*.md', '*.html']
}));

Accepts as paramater a pattern like in multimatch.

ignorekeys

Metalsmith(__dirname)
.use(writemetadata({
  ignorekeys: ['next', 'previous']
}));

Accepts an array of keys to ignore in the output. These keys are ignored regardless of where in the object hierarchy they appear.

childIgnorekeys

Metalsmith(__dirname)
.use(writemetadata({
  childIgnorekeys: ['next', 'previous', 'content']
}));

Accepts an array of keys to ignore in the output if they are not a part of the root object.

bufferencoding

Since: 0.4.3
Default: false
See: Buffer.toString
Resolves: Issue #1

Metalsmith(__dirname)
.use(writemetadata({
  bufferencoding: 'utf8'
}));

If this value is set, the contents field which is internally represented as a Buffer, will be converted to a string by calling the method Buffer.toString with the encoding specified in the options.

collections

If used together with the collections plugin, this plugin can also write collections.

Metalsmith(__dirname)
.use(collections({
  projects: {
    pattern: 'content/projects/*.html'
  }
}))
.use(writemetadata({
  collections: {
    projects: {
      output: {
        path: 'content/projects.json',
        asObject: true,
        metadata: {
          "type": "list"
        }
      },
      ignorekeys: ['contents', 'next', 'previous']
    }
  }
}))
collections.output

output is a parameter for collections, determining the desired output. If asObject is false, an array will be output. Otherwise a object in following format (taking example from above):

{
  name: 'projects',
  total: 9,
  type: 'list',
  result: [...]
  
}

Complete example

This example is from a real world example:

Metalsmith(__dirname)
.source('./resources')
.destination('./build')
.use(ignore([
  '**/.bower.json',
  '**/*.gzip'
]))
.use(markdown())
.use(collections({
  projects: {
    pattern: 'content/projects/*.html'
  }
}))
.use(writemetadata({
  pattern: ['**/*.html'],
  ignorekeys: ['next', 'previous'],
  bufferencoding: 'utf8',
  collections: {
    projects: {
      output: {
        path: 'content/projects.json',
        asObject: true,
        metadata: {
          "type": "list"
        }
      },
      ignorekeys: ['contents', 'next', 'previous']
    }
  }
}))

License

MIT

About

A metalsmith plugin to write the metadata excerpted from the files to the filesystem as json files.

Resources

License

Stars

Watchers

Forks

Packages

No packages published