@metalsmith/default-values
Version:
A metalsmith plugin for setting default values to file metadata.
38 lines (36 loc) • 1.17 kB
TypeScript
import { Plugin, File } from 'metalsmith';
export default defaultValues;
export type DefaultSetter<FileMeta, GlobalMeta> = (data:FileMeta, metadata: GlobalMeta) => any
export interface DefaultsSet<FileMeta = File, GlobalMeta = {[key:string]:any}> {
/** an object whose keys will be set as file metadata keys */
defaults: {
[key:string]: DefaultSetter<FileMeta, GlobalMeta>|string|boolean|number|Object;
}
/**
* 1 or more glob patterns to match files.
* @default '**'
**/
pattern?: string;
/**
* Strategy to handle setting defaults to keys that are aleady defined.
* @default 'keep'
*/
strategy?: 'keep'|'overwrite'
}
export type Options<FileMeta, GlobalMeta> = DefaultsSet<FileMeta, GlobalMeta>|DefaultsSet<FileMeta, GlobalMeta>[]
/**
* Set `defaults` to file metadata matching `pattern`'s.
*
* @example
* metalsmith.use(defaultValues({
pattern: 'posts/*.md',
defaults: {
layout: 'post.hbs',
draft: false,
date(post) {
return post.stats.ctime
}
}
}))
**/
declare function defaultValues<FileMeta = File, GlobalMeta = {[key:string]:any}>(options: Options<FileMeta, GlobalMeta>): Plugin;