92 lines
1.7 KiB
Markdown
92 lines
1.7 KiB
Markdown
# Directus To Markdown
|
|
|
|
This library export [Directus](https://directus.io) 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 :
|
|
|
|
```js
|
|
const config = {
|
|
url: 'https://your.directus.url',
|
|
token: 'your-token',
|
|
...
|
|
}
|
|
```
|
|
|
|
### Collection Name
|
|
|
|
The key of collections object should be the name of Directus Collection :
|
|
|
|
```js
|
|
const config = {
|
|
collections: {
|
|
news: { ... },
|
|
pages: { ... }
|
|
}
|
|
}
|
|
```
|
|
|
|
### Content key
|
|
|
|
_default: content_
|
|
|
|
You can modify the field of the content :
|
|
|
|
```js
|
|
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
|
|
|
|
```js
|
|
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();
|
|
```
|