@resilien/directus-to-markdown

Export Directus items to markdown files with assets

Usage no npm install needed!

<script type="module">
  import resilienDirectusToMarkdown from 'https://cdn.skypack.dev/@resilien/directus-to-markdown';
</script>

README

Directus To Markdown

This library export Directus items collections to markdown files with assets.

I used it to export article from Directus to Hugo website.

Configuration

Directus

This library export data from an Directus so you should specify an url and token.

With environment variables:

export DIRECTUS_URL=https://your.directus.url
export DIRECTUS_TOKEN=your-token

or on configuration parameters:

const config = {
  url: 'https://your.directus.url',
  token: 'your-token',
  ...
}

Collection Name

The key of collections object should be the name of Directus Collection:

const config = {
  collections: {
    news: { ... },
    pages: { ... }
  }
}

Content key

default: content

You can modify the field of the content:

const config = {
  contentKey: 'body',
  ...
}

deleteFields

Delete keys on markdown front matter:

const config = {
  deleteFields: ['id', 'jobs'],
  ...
}

readByQueryOption

readByQueryOption match https://docs.directus.io/reference/sdk/#read-by-query

Export to specific path

For each collection you should an pathBuilder.

Example

import DirectusToMarkdown from '@resilien/directus-to-markdown'
import urlslug from 'url-slug'

const config = {
  url: 'https://your.directus.url',
  token: 'your-token',
  contentKey: 'body',
  collections: {
    news: {
      readByQueryOption: {
        fields: ['title', 'slug', 'date', 'image', 'image_credit', 'draft', 'body'],
        filter: { draft: { _eq: 'false' } },
        limit: -1
      },
      pathBuilder: (article) => {
        if (article.slug) {
          return `./content/news/${article.slug}`
        }
        return `./content/news/${article.date}-${urlslug(article.title, { remove: /\./g })}`;
      }
    }
  }
}

new DirectusToMarkdown(config).export();