A metalsmith plugin for permalinks.
A Metalsmith plugin that applies a custom permalink pattern to files, and renames them so that they're nested properly for static sites (converting
$ npm install metalsmith-permalinks
var Metalsmith = require'metalsmith';var permalinks = require'metalsmith-permalinks';var metalsmith = __dirnameusepermalinkspattern: ':title';
pattern can contain a reference to any piece of metadata associated with the file by using the
:PROPERTY syntax for placeholders.
If no pattern is provided, the files won't be remapped, but the
path metadata key will still be set, so that you can use it for outputting links to files in the template.
pattern can also be a set as such:
var Metalsmith = require'metalsmith';var permalinks = require'metalsmith-permalinks';var metalsmith = __dirnameusepermalinks// original options would act as the keys of a `default` linkset,pattern: ':title'date: 'YYYY'// each linkset defines a match, and any other desired optionlinksets:match: collection: 'blogposts'pattern: 'blog/:date/:title'date: 'mmddyy'match: collection: 'pages'pattern: 'pages/:title';
By default any date will be converted to a
YYYY/MM/DD format when using in a permalink pattern, but you can change the conversion by passing a
metalsmithusepermalinkspattern: ':date/:title'date: 'YYYY';
It uses moment.js to format the string.
When this plugin rewrites your files to be permalinked properly, it will also duplicate sibling files so that relative links like
/images/cat.gif will be preserved nicely. You can turn this feature off by setting the
relative option to
For example for this source directory:
src/ css/ style.css post.html
Here's what the build directory would look like with
build/ post/ index.html css/ style.css css/ style.css
And here's with
build/ post/ index.html css/ style.css
A file can be ignored by the metalsmith-permalinks plugin if you pass the
permalink: false option to the yaml metadata of a file.
This is useful for hosting a static site on AWS S3, where there is a top level
error.html file and not an
For example, in your error.md file:
---template: errorhtmltitle: errorpermalink: false---
You can also use the plugin with the Metalsmith CLI by adding a key to your