UNPKG

@metalsmith/default-values

Version:

A metalsmith plugin for setting default values to file metadata.

43 lines (40 loc) 1.32 kB
import Metalsmith, { Plugin, File, Files } from 'metalsmith'; export default defaultValues; export type DefaultSetter<FileMeta extends File = File> = ( currentFile: Readonly<FileMeta>, currentPath: Readonly<string>, files:Readonly<Files>, metalsmith:Readonly<Metalsmith> ) => any export interface DefaultsSet<FileMeta extends File = File> { /** an object whose keys will be set as file metadata keys */ defaults: Record<string, DefaultSetter<FileMeta>|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 extends File = File> = DefaultsSet<FileMeta>|DefaultsSet<FileMeta>[] /** * Set `defaults` or _computed values_ to file metadata matching `pattern`'s. * * @example * metalsmith.use(defaultValues([{ * pattern: 'posts/*.md', * defaults: { * layout: 'post.hbs', * draft: false, * 'some.nested.property': true, * isodate(post, postPath, allFiles, metalsmith) { * return new Date(post.stats.ctime).toISOString() * } * } *})) **/ declare function defaultValues<FileMeta extends File = File>(options: Options<FileMeta>): Plugin;