Go to file
Simon 4fe23e688f feat: Create library 2022-01-27 12:41:28 +01:00
.gitignore feat: Create library 2022-01-27 12:41:28 +01:00
README.md feat: Create library 2022-01-27 12:41:28 +01:00
index.js feat: Create library 2022-01-27 12:41:28 +01:00
package-lock.json feat: Create library 2022-01-27 12:41:28 +01:00
package.json feat: Create library 2022-01-27 12:41:28 +01:00

README.md

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',
  ...
}

readManyOption

readManyOption match https://docs.directus.io/reference/sdk/#read-multiple-items

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: {
      readManyOption: {
        fields: ['title', 'slug', 'date', 'image', 'image_credit', 'draft', 'body'],
        filter: { draft: { _eq: 'false' } }
      },
      pathBuilder: (article) => {
        if (article.slug) {
          return `./content/news/${article.slug}`
        }
        return `./content/news/${article.date}-${urlslug(article.title, { remove: /\./g })}`;
      }
    }
  }
}

new DirectusToMarkdown(config).export();