Go to file
Simon ab796326f1 feat: Update filename with path field 2022-02-23 16:14:51 +01:00
.gitignore feat: Create library 2022-01-27 12:41:28 +01:00
README.md feat: Add deleteFields field to delete keys on markdown front matter 2022-02-23 16:13:39 +01:00
index.js feat: Update filename with path field 2022-02-23 16:14:51 +01:00
package-lock.json chore: Upgrade to 1.0.1 2022-02-21 17:46:58 +01:00
package.json chore: Upgrade to 1.0.1 2022-02-21 17:46:58 +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',
  ...
}

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();