metalsmith-paths

A metalsmith plugin that adds file path values to metadata.

Usage no npm install needed!

<script type="module">
  import metalsmithPaths from 'https://cdn.skypack.dev/metalsmith-paths';
</script>

README

Metalsmith Paths version License

A Metalsmith plugin that adds file path values (base, dir, ext, name, href) to metadata path property.

Build Status Downloads Code Climate Coverage Status Dependency Status Dependencies

Install

npm install --production --save metalsmith-paths

Usage

I recommend using an optimized build matching your Node.js environment version, otherwise, the standard require would work just fine with any version of Node >= v4.0 .

/*
 * Node 7
 */
const paths = require('metalsmith-paths/lib/node7')

/*
 * Node 6
 */
const paths = require('metalsmith-paths/lib/node6')

/*
 * Node 4 (Default)
 * Note: additional ES2015 polyfills may be required
 */
var paths = require('metalsmith-paths')

API

const metalsmith = new Metalsmith(__dirname)
  .use(paths({
    property: "paths"
  }))

given the following directory structure:

src/
└── blog
    └── post.html

The following metadata will be generated:

metadata value
path.base post.html
path.dir blog
path.ext .html
path.name post
path.href /blog/post.html
path.dhref /blog/

CLI

You can also use the plugin with the Metalsmith CLI by adding a key to your metalsmith.json file:

{
  "plugins": {
    "metalsmith-paths": {
      "property": "paths"
    }
  }
}

Options

name description default
property property to store the path data to path
directoryIndex remove the filename if it matches disabled

directoryIndex

Removes the filename from the href attribute if it matches the value of directoryIndex. Default: disabled. For example, the following configuration:

{
  "plugins": {
    "metalsmith-paths": {
      "property": "path",
      "directoryIndex": "index.html"
    }
  }
}

Would produce the following filenames:

Filename path.href
/index.html /
/portfolio/index.html /portfolio/
/portfolio/project1.html /portfolio/project1.html
/portfolio/project2.html /portfolio/project2.html

:copyright: ahmadnassri.com  ·  License: ISC  ·  Github: @ahmadnassri  ·  Twitter: @ahmadnassri