Skip to content

mikestopcontinues/metalsmith-validate

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-validate

A Metalsmith plugin that allows you to validate file metadata. You can check existence, type, and regex pattern. Neat.

Features

  • works on files matching pattern
  • can specify default for when key unspecified
  • can test for existence or for lack thereof
  • can validate against type or array of types using type-check
  • can match against pattern as RegExp, string, or callback(value) returning boolean

Installation

$ npm install metalsmith-validate

Usage

Validate all files

Pass hash of file metadata keys and rules.

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

metalsmith.use(validate({
  title: {
  	exists: true,
  	type: 'String'
  },
  date: {
  	exists: true,
  	pattern: /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/
  },
  tag: {
  	default: 'news'
  },
  draft: {
  	exists: false
  }
}));

Validate pattern-matching files

Pass array of hashes with file-matching pattern and metadata validation hash:

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

metalsmith.use(validate([
	{
		pattern: 'post/*',
		metadata: {
			title: true, // shorthand for title: { exists: true }
			date: true,
			invalid: false
		}
	},
	{
		// pattern defaults to '**/*'
		metadata: {
			template: {
				default: function (file, data) {
					return file + '.jade';
				},
				pattern: function (value) {
					return value.match(/\.jade$/);
				}
			}
		}
	}
));

Notice, both default and pattern accept callbacks. Also note the file-matching pattern is specified as a path after the metalsmith .source path (e.g. 'post/' and not 'src/post/').

CLI Usage

All of the same options apply, just add them to the "plugins" key in your metalsmith.json configuration:

{
  "plugins": {
    "metalsmith-validate": [
      {
        "pattern": "page/*",
        "metadata": {
        	"title": {
        		"exists": true,
        		"type": "String"
        	}
        }
      }
    ]
  }
}

License

MIT

About

A Metalsmith plugin that allows you to easily validate file metadata, checking existence, type, and regex pattern.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •