feat: Add deleteFields field to delete keys on markdown front matter

This commit is contained in:
Simon 2022-02-23 16:13:25 +01:00
parent 111896770c
commit 3af1ef11f7
2 changed files with 22 additions and 7 deletions

View File

@ -17,7 +17,7 @@ export DIRECTUS_URL=https://your.directus.url
export DIRECTUS_TOKEN=your-token export DIRECTUS_TOKEN=your-token
``` ```
or on configuration parameters : or on configuration parameters:
```js ```js
const config = { const config = {
@ -29,7 +29,7 @@ const config = {
### Collection Name ### Collection Name
The key of collections object should be the name of Directus Collection : The key of collections object should be the name of Directus Collection:
```js ```js
const config = { const config = {
@ -44,7 +44,7 @@ const config = {
_default: content_ _default: content_
You can modify the field of the content : You can modify the field of the content:
```js ```js
const config = { const config = {
@ -53,6 +53,17 @@ const config = {
} }
``` ```
### deleteFields
Delete keys on markdown front matter:
```js
const config = {
deleteFields: ['id', 'jobs'],
...
}
```
### readByQueryOption ### readByQueryOption
`readByQueryOption` match https://docs.directus.io/reference/sdk/#read-by-query `readByQueryOption` match https://docs.directus.io/reference/sdk/#read-by-query

View File

@ -12,14 +12,17 @@ export default class DirectusToMarkdown {
this.directus = new Directus(this.url, { auth: { staticToken: this.token }}); this.directus = new Directus(this.url, { auth: { staticToken: this.token }});
} }
_formatFrontMatter(item) { _formatFrontMatter(item, deleteFields) {
const front = { ...item } // copie item const front = { ...item } // copie item
delete front[this.contentKey] delete front[this.contentKey]
for (const field of deleteFields) {
delete front[field]
}
return `---\r\n${yaml.dump(front).trim()}\r\n---\r\n\r\n` return `---\r\n${yaml.dump(front).trim()}\r\n---\r\n\r\n`
} }
async _writeIndex(item, itemPath) { async _writeIndex(item, itemPath, deleteFields) {
const frontMatter = this._formatFrontMatter(item) const frontMatter = this._formatFrontMatter(item, deleteFields)
const content = item[this.contentKey] ? item[this.contentKey].toString() : '' const content = item[this.contentKey] ? item[this.contentKey].toString() : ''
const itemContent = `${frontMatter}${content}\r\n` const itemContent = `${frontMatter}${content}\r\n`
const indexName = 'index' // TODO: index or _index ? const indexName = 'index' // TODO: index or _index ?
@ -79,6 +82,7 @@ export default class DirectusToMarkdown {
for (const collectionName in this.collections) { for (const collectionName in this.collections) {
const collection = this.collections[collectionName] const collection = this.collections[collectionName]
const readByQueryOption = collection.readByQueryOption const readByQueryOption = collection.readByQueryOption
const deleteFields = collection.deleteFields
const items = (await this.directus.items(collectionName).readByQuery(readByQueryOption)).data const items = (await this.directus.items(collectionName).readByQuery(readByQueryOption)).data
for (const item of items) { for (const item of items) {
const itemPath = collection.pathBuilder(item) const itemPath = collection.pathBuilder(item)
@ -87,7 +91,7 @@ export default class DirectusToMarkdown {
} }
await this._downloadAssets(item, itemPath) await this._downloadAssets(item, itemPath)
await this._downloadAssetsFromContent(item, itemPath) await this._downloadAssetsFromContent(item, itemPath)
await this._writeIndex(item, itemPath) await this._writeIndex(item, itemPath, deleteFields)
} }
} }
} }