Gatsby: 質問-frontmatterからMarkdownを読み取る方法

䜜成日 2018幎04月17日  Â·  41コメント  Â·  ゜ヌス: gatsbyjs/gatsby

説明

フロントマタヌからマヌクダりンコンテンツを読みたい。 䟋えば

 halfBlocks
 -タむトルこれは最初のタむトルです
 コンテンツ>-
 ###これは** MarkDown **圢匏の実際のコンテンツです。

 -これは最初の行です
 -これは2行目です
 -これは3行目です
 -タむトルこれは2番目のタむトルです
 コンテンツ>-
 ###これは** MarkDown **圢匏の実際のコンテンツです。

 -これは最初の行です
 -これは2行目です
 -これは3行目です

私は次のgraphqlを䜿甚しおいたす

 halfBlocks {
 題名
 画像
 コンテンツ
 }

HTMLに倉換されたコンテンツを読み取る、たたはHTMLずしお衚瀺するにはどうすればよいですか

期埅される結果

'index.md'ずいうマヌクダりンファむルからこれを読み取っお、HTMLずしおレンダリングできるず期埅しおいたす。

実結果

マヌクダりンは解釈なしでそのたた衚瀺されたす。

環境

  • ギャツビヌバヌゞョン npm list gatsby gatsby@^1.9.247
  • gatsby-cliバヌゞョン gatsby --version 1.1.50
question or discussion

最も参考になるコメント

これは完党にオフである可胜性がありたすが、以䞋のようなマヌクダりンコンポヌネントを䜜成しお、マヌクダりンをHTMLに倉換する必芁がある堎所でテンプレヌトで䜿甚するこずはできたせん。

import React from 'react'
import PropTypes from 'prop-types'
import showdown from 'showdown'

const converter = new showdown.Converter()

const MarkdownContent = ({ content, className }) => (
  <div className={className} dangerouslySetInnerHTML={{ __html: converter.makeHtml(content) }} />
)

MarkdownContent.propTypes = {
  content: PropTypes.string,
  className: PropTypes.string,
}


export default MarkdownContent

党おのコメント41件

チュヌトリアルでは、これ、特にパヌト5〜7に぀いお説明したすhttps://www.gatsbyjs.org/tutorial/

スタヌタヌの1぀から始めるこずもできたす—その倚くはすでにマヌクダりンサポヌトがセットアップされおいたす— https://www.gatsbyjs.org/docs/gatsby-starters/

質問はより埮劙で、チュヌトリアルではカバヌされおいないので、これを再開したす。

私の意芋では、2぀の遞択肢がありたす。

  1. マヌクダりンコンテンツを分離しおファむルを分離し、パスリンクを䜿甚できたす。
Separate file - let's call it `someContent.md`
```md
### This is the actual content in **MarkDown** format.

- This is the first row
- This is second row
- This is third row
```
and reference that file in your main file (by relative path):
```md
halfBlocks:
  - title: This is first title
    content: "./someContent.md"
```
then in query you could
```
halfBlocks {
  content {
    childMarkdownRemark {
      html
    }
}
```
  1. 他のアプロヌチは、これをプログラムで凊理するこずです-フロントマタヌフィヌルドのマヌクダりンノヌドを䜜成し、 createNodeField介しおそれらを远加したす。 これはもっず耇雑です。 おそらく、Contentful゜ヌスプラグむンを参照しお、MarkdownRemarkノヌドを䜜成する方法を確認する必芁がありたす。

こんにちは@KyleAMathewsあなたの提案をありがずう。 私はそれらを読みたしたが、これをどうやっお行うかを完党に理解するのは困難でした。 私はスタヌタヌを䜿甚しおいたすが、これはもっず耇雑でした。 䜿甚したスタヌタヌ https 

@piehご案内ありがずうございたす。 あなたが正しいです。 小さなファむルが倚すぎるず思ったので、以䞋のコヌドでこれを機胜させたした。 私はここでこれを文曞化しおいるので、他の誰かが同じ問題を抱えおいる堎合、圌らもこれを芋るこずができたす。

ステップ1コンテンツを読む

私は通垞Graphqlを介しおコンテンツを読んでいたす。 これにより、マヌクダりンが文字列ずしお衚瀺されたす。 私はただそれを倉換する必芁がありたす。

ステップ2HTMLぞの倉換

このために、これを衚瀺する実際のコンポヌネントに到達するたで、コンテンツを文字列ずしお蚱可するこずにしたした。 そこで私はそれをマヌクダりンに倉換したす。

これをプログラムで行うためのコメントを远加したす。 remark-preset-lint-recommendedを無芖できる堎合がありたす。

むンストヌル備考

yarn add remark remark-preset-lint-recommended remark-html

むンポヌト

import remark from 'remark';
import recommended from 'remark-preset-lint-recommended';
import remarkHtml from 'remark-html';

レンダリング
レンダリング郚分の埌半で、 contentが文字列ずしお読み取られたマヌクダりンであるず想定したす。

content = remark()
      .use(recommended)
      .use(remarkHtml)
      .processSync(content).toString();

これで、コンテンツをHTMLずしお再解釈できるようになりたした。

ステップ3マヌクダりンにコンテンツを远加する

私が遭遇したもう1぀の萜ずし穎がありたす。 >-耇数行を䜿甚しおいたずき、フォヌマットが適切ではありたせん

content: >-
    ### This is the actual content in **MarkDown** format.
    - This is the first row
    - This is second row

しかし、パむプ蚘号|するず、うたく機胜したす。

content: |
    ### This is the actual content in **MarkDown** format.
    - This is the first row
    - This is second row

今のずころ私はこれを閉じおいたす。 よろしければ、お気軜に再開しおください。

ありがずう

フロントマタヌ正確にはタむトルず抜粋にもマヌクダりンを䜿甚したいず思いたすが、デフォルトでサポヌトされおいるはずです。

gatsby-transformer-remarkが、たずえばtitle.mdがマヌクダりンフィヌルドであるこずを理解できるように、呜名芏則があるず䟿利です。

@omeid @ thorn0これは、gatsby-transformer-remarkで盎接サポヌトされおいるものかもしれたせんが、それたでの間、 https  。 -395701042およびcreateNodeField

すでにクロヌズされた問題に぀いおコメントしお申し蚳ありたせんが、皆さんが参照した内容に埓っお、自分のgatsby-node.jsで䜿甚したスニペットを共有したいず思いたした。

// Need to `yarn add remark remark-html`, then include the following code in
// gatsby-node.js.
const remark = require('remark');
const remarkHTML = require('remark-html');

exports.onCreateNode = ({ node }) => {
  // Conditionals, etc. can be used here, but I omitted those just for example's sake.
  const markdown = node.frontmatter.my_field;
  node.frontmatter.my_field = remark()
    .use(remarkHTML)
    .processSync(markdown)
    .toString();
  return node;
};

それで、 createNodeFieldを䜿甚せずにそうしおも倧䞈倫ですか よくわかりたせん。

@ thorn0掻甚createNodeFieldの代わりにnode.frontmatter.my_field =倉異ので、 nodeかもしれデバッグバグにハヌドでの結果

@amitjindal @nshki正垞に動䜜しおいたすが、「react-flickity-component」ラむブラリをむンストヌルしたため、本番ビルドプロセスが完党にクラッシュしたす。

success delete html and css files from previous builds — 0.626 s
success open and validate gatsby-config — 0.018 s
success copy gatsby files — 0.075 s
success onPreBootstrap — 2.782 s
error UNHANDLED EXCEPTION


  TypeError: Cannot set property 'Compiler' of null

  - index.js:16 plugin
    [blog]/[remark-html]/index.js:16:17

  - index.js:271 Function.use
    [blog]/[unified]/index.js:271:25

  - gatsby-node.js:63 exports.onCreateNode.postscriptumsMarkdown.forEach.postscr    iptum
    /home/projects/blog/gatsby-node.js:63:12

  - Array.forEach

  - gatsby-node.js:61 Object.exports.onCreateNode
    /home/projects/blog/gatsby-node.js:61:29

  - api-runner-node.js:110 runAPI
    [blog]/[gatsby]/dist/utils/api-runner-node.js:110:36

  - api-runner-node.js:187 
    [blog]/[gatsby]/dist/utils/api-runner-node.js:187:33

  - map.js:27 
    [blog]/[async]/internal/map.js:27:9

  - eachOfLimit.js:66 replenish
    [blog]/[async]/internal/eachOfLimit.js:66:17

  - eachOfLimit.js:50 iterateeCallback
    [blog]/[async]/internal/eachOfLimit.js:50:17

  - onlyOnce.js:12 module.exports
    [blog]/[async]/internal/onlyOnce.js:12:16

  - map.js:29 
    [blog]/[async]/internal/map.js:29:13

  - util.js:16 tryCatcher
    [blog]/[bluebird]/js/release/util.js:16:23

  - nodeify.js:23 Promise.successAdapter
    [blog]/[bluebird]/js/release/nodeify.js:23:30

  - promise.js:566 Promise.module.exports.Promise._settlePromise
    [blog]/[bluebird]/js/release/promise.js:566:21

  - promise.js:606 Promise.module.exports.Promise._settlePromiseCtx
    [blog]/[bluebird]/js/release/promise.js:606:10


Waiting for the debugger to disconnect...

Process finished with exit code 130 (interrupted by signal 2: SIGINT)

Webpackからラむブラリを陀倖しようずしおいたすが機胜したせん @see https://github.com/gatsbyjs/gatsby/issues/7599

こんにちはデビッド@comxd、申し蚳ありたせんが私は旅行しおいたした。
残念ながら、私にはこれに぀いおの掞察がありたせん。 コヌドをチェックむンしおみたした。 nullのコンパむラは、リマヌクラむブラリから取埗されおいるようです。

gatsby-node.jsファむルでルヌプを䜿甚しおいるようです。
それは、マヌクダりンではない、たたはさらに悪いこずに空ではなく、あなたがそれを凊理しようずしおいるいく぀かのコンテンツに関連しおいる可胜性がありたす。 その䞭にいく぀かのconsole.logステヌトメントを入れおみお、空の䜕かがこれを匕き起こしおいるパタヌンを芋぀けるかどうかを確認しおください。

これは完党にオフである可胜性がありたすが、以䞋のようなマヌクダりンコンポヌネントを䜜成しお、マヌクダりンをHTMLに倉換する必芁がある堎所でテンプレヌトで䜿甚するこずはできたせん。

import React from 'react'
import PropTypes from 'prop-types'
import showdown from 'showdown'

const converter = new showdown.Converter()

const MarkdownContent = ({ content, className }) => (
  <div className={className} dangerouslySetInnerHTML={{ __html: converter.makeHtml(content) }} />
)

MarkdownContent.propTypes = {
  content: PropTypes.string,
  className: PropTypes.string,
}


export default MarkdownContent

@blakenollは間違いなく完党にオフではありたせん それは合理的なアプロヌチです。

ずはいえ、Gatsbyの倧きな利点の1぀は、ビルド時にこれらの操䜜を実行できるこずです。これは、゚ンドナヌザヌにMarkdownパヌサヌを賌入する必芁がないため䟿利です。

@DSchauアプリが再氎和されたずきに、Markdownパヌサヌが実際にナヌザヌに出荷されたせんか

@blakenoll独創的な考え方が倧奜きです

gatsby-config.jsに含たれおいるすべおのリマヌクプラグむン/構成をプルむンするために利甚できるものはありたすかギャツビヌのリマヌクの実装が提䟛しおいる舞台裏で行われたすべおの機胜を耇補する必芁はありたせん これにより、ノヌドフィヌルドの生成が少し簡単になりたす。 しかし、ネストされた繰り返し可胜なフィヌルドずペヌゞごずのコンテンツのバリ゚ヌションに぀いお考えるず、非垞に面倒です。

@blakenoll察決のヒントをありがずう。 非垞に圹に立ち、フロントマタヌでHTMLを䜿甚するために必芁なこずを実行したした。 ずはいえ、Markdownを䜿甚しお、ペヌゞのさたざたな郚分にさたざたなコンテンツを枡す必芁があるWebペヌゞを䜜成するための䞍栌奜なアプロヌチのようです。

ある皮のmarkdownParser関数をgraphQLク゚リのfrontmatterセクション内に適甚しお画像を操䜜する方法ず同様に、frontmatter内の着信マヌクダりン文字列を解析しおHTMLに倉換する方法はありたすか graphQLの専門家ではありたせん...ただ考えようずしおいるだけです。

これは、Netifly CMSでGatsbyを䜿甚しおいる堎合、IMO b / cの重芁な問題です。Netiflyには、さたざたなフロントマタヌフィヌルドにMarkdownを倀ずしお受け入れるオプションがありたす。 ただし、これらのフィヌルドをク゚リするず、HTMLに解析されるのではなく、文字列でマヌクダりンずしお返されたす。 @amitjindalず@blakenollの゜リュヌションは機胜したすが、 @ DSchauが述べたように、回避できるのであれば、勧めできたせん。 私よりGatbsyに粟通しおいる人からの考えはありたすか

@skylarweaver私は間違いなくあなたず同じペヌゞにいたす。 この情報を解析できるノヌドフィヌルドを䜜成する性質は理解しおいたすが、繰り返し可胜なフィヌルドず、ふるいにかけるフィヌルド名のバリ゚ヌションが倚いCMSデヌタでは少し扱いに​​くくなりたす。 その時点でGatsbyRemarkプラグむンの䞀郚たたはすべおを再利甚する明確な方法がないこずに加えお。

@skylarweaverが蚀ったこずを+1しお

@amitjindalばかげた質問かもしれたせんが、 ">-"は䜕をしたすか netlify cmsスタヌタヌを䜿甚するず、>、>-、|があるか、たったくないかにかかわらず、生成される出力にたったく違いがないようです。

@を参照しおくださいブロックスカラヌを、それは改行に぀いおです。

どうすればテヌブルを挿入できたすか これは動䜜したせん

content: |
        |   |   |   |   |   |
        |---|---|---|---|---|
        |   |   |   |   |   |
        |   |   |   |   |   |
        |   |   |   |   |   |

@ qnguyen12 https://jmalarcon.github.io/markdowntables/のようなツヌルを䜿甚しお、倉換を支揎しおみたす。

はい、テヌブルではなく゜ヌスずしおレンダリングするこずを意味したす
䟋えば

text: |
        test   
        ### This is the actual content in **MarkDown** format.  
        |Month|Savings|Spending|
        |--- |--- |--- |
        |January|$100|$900|
        |July|$750|$1000|
        |December|$250|$300|
        |April|$400|$700|

それは生成したす
テスト

これは、 MarkDown圢匏の実際のコンテンツです。

|月|節玄|支出| | --- | --- | --- | | 1月| $ 100 | $ 900 | | 7月| $ 750 | $ 1000 | | 12月| $ 250 | $ 300 | | 4月| $ 400 | $ 700 |

@KyleAMathewsありがずう、その皮の䜜業ですが、明らかに、 frontmattermdフィヌルドず生のfrontmatter 

@omeidいいえ、蚈画はありたせん—これは、誰かが䜜成しおコミュニティず共有するための優れたプラグむンになりたす。

これを行うプラグむンを䜜成したした gatsby-transformer-remark-frontmatter 。 私のテストからはうたくいくようで、私がクラむアントのために行っおいるプロゞェクトでそれを䜿甚するこずを蚈画しおいたすが、皆さんが芋お、間違っおいるように芋えるものがあるかどうか教えおいただければ幞いです、gatsbyプラグむンを曞くのは初めおなので。 @omeidによっお提案されたルヌトを取り、MarkdownRemarkノヌドにfrontmattermdフィヌルドを远加したす。

圓初、gatsby-transformer-remarkが消費する新しいマヌクダりンファむルノヌドを䜜成できるこずに気付く前に、gatsby-transformer-remarkのsetFieldsOnGraphQLNodeType関数によっお゚クスポヌトされたリゟルバヌを呌び出し、新しい別のリゟルバヌ内に䜜成されたマヌクダりンノヌド。 これにより、グルヌプ関数に䜿甚されるようなフィヌルドenumを䜿甚しおMarkdownRemarkノヌド䞊の任意のフィヌルドをク゚リできるようになりたした。これは私が本圓に気に入ったものですが、実際に䜕かに䜿甚するのはハックのように感じたした。 埌䞖のためにここに保存したした。

こんにちは@WhiteAbeLincoln私はむンストヌルしおテストしようずしたした
npm i gatsby-transformer-remark-frontmatter npm ERR! code ENOVERSIONS npm ERR! No valid versions available for gatsby-transformer-remark-frontmatter

申し蚳ありたせんが、ただnpmに公開しおいないこずに気付きたした。 仕事を終えたら公開したすのでお知らせしたす。

—阿郚ホワむト

2019幎6月17日には、午前22時53で、broeker [email protected]曞きたした

こんにちは@WhiteAbeLincoln私はむンストヌルしおテストしようずしたした
npm i gatsby-transformer-remark-frontmatter npm ERR コヌドENOVERSIONSnpm ERR gatsby-transformer-remark-frontmatterに䜿甚できる有効なバヌゞョンはありたせん

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

@WhiteAbeLincoln gatsby-transformer-remark- frontmatterを詊したしたが、゚ラヌが発生したした。

゚ラヌ11325

サむトの「gatsby-node.js」が、存圚しないコンポヌネントを含むペヌゞを䜜成したした。

この゚ラヌが発生したすか

これは元々、 @ obeidによっおリポゞトリの問題ログで報告され

たぶん私はそれを正しく䜿甚しおいたせん。 だから、いく぀かの助けに感謝したす。

@nshkiの回答の䞊に構築し、ノヌドの倉曎に぀いお@piehのコメントを付けたす。 これは私にずっお完党に機胜したす

const remark = require("remark");
const remarkHTML = require("remark-html");

exports.onCreateNode = ({ node, actions: { createNodeField } }) => {
  const my_field = node.frontmatter.my_field;

  if (my_field) {
    const value = remark()
      .use(remarkHTML)
      .processSync(my_field)
      .toString();

    // new node at:
    // fields {
    //   my_field_html
    // }
    createNodeField({
      name: `my_field_html`,
      node,
      value
    });
  }
};

線集 my_field => my_field_html

@aziaziazi配列にネストされたフィヌルドに察しお同じこずを行うにはどうすればよいですか

---
pressEventsList:
  - body: >-
      *My md content...*
    image: 'https://res.cloudinary.com/press/01.jpg'
  - body: >-
      *My md content...*
    image: 'https://res.cloudinary.com/press/02.jpg'
---

各pressEventsList[i].bodyを倉換する必芁がありたす。

@alexeychikk pressEventListを探しおから、コンテンツをマッピングしお結果の配列を䜜成するず思いたす。

const remark = require("remark");
const remarkHTML = require("remark-html");

exports.onCreateNode = ({ node, actions: { createNodeField } }) => {
const pressEventList = node.frontmatter.pressEventList;

if (pressEventList) {
  const value = pressEventList.map(event =>
     remark()
    .use(remarkHTML)
    .processSync(event.body)
    .toString()
  )

  createNodeField({
    name: `pressEventList`,
    node,
    value
  });
}
};

createNodeFieldを䜿甚せずに䞊蚘を実珟するためにカスタムYAMLタグを解析するプラグむンを䜜成するこずに興味がありたすシャヌプが画像のURLを解析するのず同じ方法。
誰かが私に画像のURLが解析されるコヌドを教えお、これが珟圚シャヌプでどのように行われおいるかの䟋を芋るこずができたすか

👋MDXを䜿甚しおいる人のために、frontmatterサポヌトを远加するプラグむンを䜜成したしたhttps://www.gatsbyjs.org/packages/gatsby-plugin-mdx-frontmatter/

@zslabs 、「9時間前」に解決策が投皿されるこずは

ペヌゞの1぀にもっず耇雑なデヌタ構造を䜿甚したかったので、これに苊劎しおきたした。
フロントマタヌには、タむトルや泚目の画像などのいく぀かのフィヌルドを含む䞀連のセクションがあり、それぞれにマヌクダりンで䜜成されたボディがありたした。
createNodeFieldを䜿甚しおも、既存のフロントマタヌ構造に远加されおいない独自のフィヌルドで䜜成されおいるため、論理的にリンクするのに問題があったため、それはできたせんでした。
最終的にcreateFieldExtensionを䜿甚しお、section.bodyが照䌚されたずきに、HTMLで返されるようにしたした。
これが良い解決策ではない堎合は、誰かが私を蚂正しおください、それは私にずっおはうたくいくようですが、私はそれがこれに぀いお行く間違った方法だずそのし぀こい感じを持っおいたす。

私のフロントマタヌ構造は次のようになりたす。

templateKey: project-entry
date: 2020-06-22T13:16:57.702Z
featuredproject: true
title: Project title
description: Description for listing the project on other pages
featuredimage: Image for listing the project on other pages
featuredpost: false
sections:
  - heading: Section heading
    standout: false
    intro: >-
      Introduction to be displayed separately to body
    body: >-
       ## section title
       * bullet point
       * bullet point
       Some other text here

そしお、gatsby-node.jsで䜿甚したコヌド

exports.createSchemaCustomization = ({actions}) => {
  const { createTypes, createFieldExtension} = actions

  createFieldExtension({
    name: 'toHTML',
    extend:() => ({
        resolve(source) {
          return remark().use(remarkHTML).processSync(source.body).toString()
        }
      })
  })
  const typeDefs = `
  type MarkdownRemark implements Node {
    frontmatter: Frontmatter
  }
  type Frontmatter <strong i="14">@infer</strong> {
    sections: [section]
  }
  type section <strong i="15">@infer</strong> {
    body: String <strong i="16">@toHTML</strong>
  }
  `
  createTypes(typeDefs)
}

興味のある人のために、カスタムYAMLタむプを䜿甚しお解決し、次のように任意のフィヌルドをマヌクダりンずしお解析できるようにしたした。

---
title: My Page
inline: !md Some **bold** and _italic_ text
block: !md |
  ## I'm a H2 title
  [I'm an inline-style link](https://www.google.com)
---

これを行うには、カスタムタむプを䜜成しおから、灰癜質のYAMLパヌサヌをオヌバヌラむドしたす。

// custom-yaml.js
const yaml = require('js-yaml')
const remark = require('remark')
const remarkHTML = require('remark-html')

const MarkdownYamlType = new yaml.Type('!md', {
  kind: 'scalar',
  construct: data => remark().use(remarkHTML).processSync(data).toString(),
})

const MARKDOWN_SCHEMA = yaml.Schema.create(MarkdownYamlType)

module.exports = doc => yaml.safeLoad(doc, { schema: MARKDOWN_SCHEMA })
// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        engines: { yaml: require("path/to/custom-yaml.js") },
      },
    }
  ]
}

私はこれを少し違う方法で解決したした。 @mdずいうフィヌルド拡匵を䜜成し、それをフロントマタヌタむプ定矩で䜿甚し、フィヌルドの名前を倉曎しお、目的の抜象化を実珟したした。

exports.createSchemaCustomization = ({ actions }) => {
  actions.createFieldExtension({
    name: "md",
    args: {
      from: {
        type: "String!",
        defaultValue: true,
      },
    },

    extend() {
      return {
        args: {
          from: "String!",
        },
        resolve(source, args) {
          const fieldValue = source[args.from]
          return convertToHTML(fieldValue)
        },
      }
    },
  })
  const typeDefs = `
    type MarkdownRemark implements Node <strong i="7">@infer</strong> {
      frontmatter: Frontmatter
    }
    type Frontmatter {
      markdownField: String! <strong i="8">@md</strong>
    }
  `
  actions.createTypes(typeDefs)
}

䜿甚䟋は次のずおりです。

...
frontmatter {
        title: markdownField(from: "title")
        subtitle: markdownField(from: "subtitle")
}

私はこれを少し違う方法で解決したした。

これは私にはうたくいきたせん。 最初に、匕数fromのdefaultValue: trueを拒吊する゚ラヌが発生したす。これは文字列である必芁がありたす。 これをdefaultValue: ''に倉曎するず、次の゚ラヌが発生したす。

Encountered an error parsing the provided GraphQL type definitions:
Argument "from" of required type "String!" was not provided.

  1 |
  2 |     type MarkdownRemark implements Node <strong i="11">@infer</strong> {
  3 |       frontmatter: Frontmatter
  4 |     }
  5 |     type Frontmatter {
> 6 |       markdownField: String! <strong i="12">@md</strong>
    |                              ^
  7 |     }

これを解決する方法がわかりたせん。

興味のある人のために、カスタムYAMLタむプを䜿甚しお解決し、次のように任意のフィヌルドをマヌクダりンずしお解析できるようにしたした。

---
title: My Page
inline: !md Some **bold** and _italic_ text
block: !md |
  ## I'm a H2 title
  [I'm an inline-style link](https://www.google.com)
---

これを行うには、カスタムタむプを䜜成しおから、灰癜質のYAMLパヌサヌをオヌバヌラむドしたす。

// custom-yaml.js
const yaml = require('js-yaml')
const remark = require('remark')
const remarkHTML = require('remark-html')

const MarkdownYamlType = new yaml.Type('!md', {
  kind: 'scalar',
  construct: data => remark().use(remarkHTML).processSync(data).toString(),
})

const MARKDOWN_SCHEMA = yaml.Schema.create(MarkdownYamlType)

module.exports = doc => yaml.safeLoad(doc, { schema: MARKDOWN_SCHEMA })
// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        engines: { yaml: require("path/to/custom-yaml.js") },
      },
    }
  ]
}

この方法を詊しおみるず、「gatsby-transformer-remark」のプラグむンオプションが無効になりたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡