gridsome-transformer-obsidian v0.0.8
WORK IN PROGRESS
This is a fork of the @gridsome/transformer-remark
This is needed since I need to add for multiple types of links that needs support. Which when parsed also needs to be used to extend some fields in graphql. From what I can see, this is not possible via remark plugins, or to have multiple transformers for the same file format.
==highlight text==
[[Internal link]]
[[Internal link|With custom text]]
[[Internal link#heading]]
[[Internal link#heading|With custom text]]
![[Embed note]]
![[Embed note#heading]]
Why not just extend?
When I try to extend the current package i get the following error:
Error: TypeError[Post.content]: Cannot convert to InputType the following value: Object({ type: String, resolve: [function resolve] })
at TypeMapper.convertOutputFieldConfig (/home/n/git/gridsome-markdown-example-main/node_modules/graphql-compose/lib/TypeMapper.js:320:13)
at ObjectTypeComposer.setField (/home/n/git/gridsome-markdown-example-main/node_modules/graphql-compose/lib/ObjectTypeComposer.js:210:114)
at createThirdPartyFields (/home/n/git/gridsome-markdown-example-main/node_modules/gridsome/lib/graphql/nodes/index.js:195:18)
at createNodesSchema (/home/n/git/gridsome-markdown-example-main/node_modules/gridsome/lib/graphql/nodes/index.js:39:5)
at createSchema (/home/n/git/gridsome-markdown-example-main/node_modules/gridsome/lib/graphql/createSchema.js:59:3)
at Schema.buildSchema (/home/n/git/gridsome-markdown-example-main/node_modules/gridsome/lib/app/Schema.js:28:28)
at Plugins.createSchema (/home/n/git/gridsome-markdown-example-main/node_modules/gridsome/lib/app/Plugins.js:94:22)
All under here is from @gridsome/transformer-remark
Markdown transformer for Gridsome with Remark.
Install TODO FIX
npm install @gridsome/transformer-remark
yarn add @gridsome/transformer-remark
pnpm install @gridsome/transformer-remark
Basic usage TODO FIX
The transformer is automatically used if installed in your project. Custom transformer options can either be set for each source plugin or globally.
//gridsome.config.js
module.exports = {
plugins: [
{
use: '@gridsome/source-filesystem',
options: {
path: 'blog/**/*.md',
typeName: 'Post',
remark: {
// remark options
}
}
}
],
transformers: {
remark: {
// global remark options
}
}
}
Add additional plugins
By default this plugin comes with remark-slug
, remark-autolink-headings
, remark-external-links
, remark-squeeze-paragraphs
and remark-fix-guillemets
included. Add any additional Remark plugin with a plugins
option. Included plugins can also be disabled if needed. See more info below.
The following example adds the remark-attr
plugin globally if it is installed in your project.
{
remark: {
plugins: [
'remark-attr'
]
}
}
Options
plugins
- Type:
Array
- Default:
[]
Add additional Remark plugins.
{
remark: {
plugins: [
// add plugin without options
'remark-plugin',
// require plugin manually
require('remark-plugin'),
// add plugin with options
['remark-plugin', { /* plugin options */ }]
]
}
}
useBuiltIns
- Type:
boolean
- Default:
true
Set this option to false
to disable all built-in plugins.
grayMatter
- Type:
object
- Default:
{}
Options to pass through to gray-matter for parsing front matter.
squeezeParagraphs
- Type:
boolean
- Default:
true
Remove empty (or white-space only) paragraphs.
externalLinks
- Type:
boolean
- Default:
true
Add target and rel attributes to external links.
externalLinksTarget
- Type:
string
- Default:
'_blank'
externalLinksRel
- Type:
Array | string
- Default:
['nofollow', 'noopener', 'noreferrer']
slug
- Type:
boolean
- Default:
true
Add anchors to heading.
autolinkHeadings
- Type:
boolean
- Default:
true
Automatically add links to headings. Disabled if slug
is false
.
autolinkClassName
- Type:
string
- Default:
'icon icon-link'
fixGuillemets
- Type:
boolean
- Default:
true
Support ASCII guillemets (<<
, >>
) and mapping them to HTML.
imageQuality
- Type:
number
- Default:
75
imageBlurRatio
- Type:
number
- Default:
40
imageBackground
- Type:
string
lazyLoadImages
- Type:
boolean
- Default:
true
config
- Type:
Object
- Default:
{}
Add additional Remark options.
This allows you to enable/disable gfm
, commonmark
, footnotes
, pedantic
and blocks
.
gfm
- Type:
boolean
- Default:
true
- Type:
commonmark
- Type:
boolean
- Default:
false
- Type:
footnotes
- Type:
boolean
- Default:
false
- Type:
pedantic
- Type:
boolean
- Default:
false
- Type:
blocks
- Type:
Array | string
- Default: list of block HTML elements
- Type:
{
remark: {
plugins: [
//...
],
config: {
footnotes: true
}
}
}