Hallo zusammen, kann ich Hilfe beim Schreiben von Markdown innerhalb einer Yaml-Seite erhalten? Ich versuche, von jekyll zu gatsby zu wechseln, aber eine der netten Eigenschaften von jekyll war die flüssige Templating-Sprache, die es Ihnen ermöglichte, jeden String (z. B. aus einer yaml-Datei) durch eine markdownify
Pipe zu übergeben. Dies war nützlich, wenn ich mehrere Informationen hatte, die ich auf der Seite strukturieren, aber in einer Yaml-Datei zusammenfassen wollte. Beispiel:
- title: My Title
image: ./assets/image.png
description: >
Here is a long winded description that includes a [link](https://code-somewhere.com).
- title: Second Item
image: ./assets/image2.png
description >
more text ...
Auf eine ähnliche Notiz, Laden eines Bildes auf diese Weise nicht möglich zu sein scheint, habe ich Hacky Lösungen für das, wie alle die Bilder irgendwo anders in der Datei importieren, aber ist es eine Möglichkeit , webpack wissen zu lassen, keine Bilder in der kopieren pages/
Ordner, auch wenn sie "scheinbar" nicht verwendet werden?
Wenn Sie bei Bildern gatsby-source-filesystem + gatsby-transformer-yaml + gatsby-transformer-sharp/gatsby-plugin-sharp verwenden, können Sie diese Bilder abfragen.
Sehen Sie zum Beispiel, wie gatsbyjs.org Autoren-Avatare abfragt
https://github.com/gatsbyjs/gatsby/blob/master/www/src/templates/template-blog-post.js#L306 & https://github.com/gatsbyjs/gatsby/blob/master/docs/ blog/author.yaml
Beim Ausführen von Yaml-Feldern durch Markdown können Sie Unterknoten erstellen, deren Medientyp Sie als Markdown angeben, und dann konvertiert gatsby-transformer-remark sie in HTML, z. B. https://github.com/gatsbyjs/gatsby/blob/d855150dadb91e80b836d2bd5e160cb0b84f5e2a/ /gatsby-source-contentful/src/normalize.js#L143
Tut mir leid, wenn das sehr hochrangig und nicht sehr umsetzbar ist. Gatsby konzentriert sich darauf, die Einrichtung benutzerdefinierter Datentransformationspipelines zu vereinfachen. Für allgemeine Aufgaben können die Leute Plugins auf höherer Ebene erstellen, die solche Dinge automatisch für Sie einrichten, aber ich weiß nicht, dass noch jemand für yaml => markdown => html hat.
Um dies zu erreichen, müssen Sie in die Dokumentation von Gatsby eintauchen und sich die Plugins ansehen, um zu verstehen, wie Sie das tun, was Sie tun möchten.
danke für den Rat, ich glaube nicht, dass ich bereit bin, so viel Zeit in die Erstellung eines Gatsby-Plugins zu investieren. Ich habe meine naive Lösung wie folgt:
import data from './_data.yaml'
import markdownIt from 'markdown-it'
const md = markdownIt({
html: true,
linkify: true
})
const loadedData = data.map(item => ({
...item,
image: item.image && require(item.image),
description: md.render(item.description)
}))
Dies kann immer noch während der Build-Phase passieren, so dass es für meine Zwecke funktioniert. Ich denke, das Problem ist, dass graphql darauf abzielt, zuerst Daten zu erstellen und eine ähnliche Vorlage für mehrere Seiten zu verwenden. Ich folge einer 'Modul'-Struktur wie folgt:
```
Seiten/
eine Seite/
index.js
_data.yml
Vermögenswerte/
img1.png
eine andere Seite/
...
Eine einfache Möglichkeit, dies zu tun, besteht darin, die Markdown-Felder mit onCreateNode zu kompilieren. https://www.gatsbyjs.org/tutorial/part-four/#programmically -creating-pages-from-data und fügen Sie das kompilierte Feld als neues Feld mit createNodeField
.
Das machst du einfach in deiner gatsby-node.js
Hilfreichster Kommentar
Wenn Sie bei Bildern gatsby-source-filesystem + gatsby-transformer-yaml + gatsby-transformer-sharp/gatsby-plugin-sharp verwenden, können Sie diese Bilder abfragen.
Sehen Sie zum Beispiel, wie gatsbyjs.org Autoren-Avatare abfragt
https://github.com/gatsbyjs/gatsby/blob/master/www/src/templates/template-blog-post.js#L306 & https://github.com/gatsbyjs/gatsby/blob/master/docs/ blog/author.yaml
Beim Ausführen von Yaml-Feldern durch Markdown können Sie Unterknoten erstellen, deren Medientyp Sie als Markdown angeben, und dann konvertiert gatsby-transformer-remark sie in HTML, z. B. https://github.com/gatsbyjs/gatsby/blob/d855150dadb91e80b836d2bd5e160cb0b84f5e2a/ /gatsby-source-contentful/src/normalize.js#L143
Tut mir leid, wenn das sehr hochrangig und nicht sehr umsetzbar ist. Gatsby konzentriert sich darauf, die Einrichtung benutzerdefinierter Datentransformationspipelines zu vereinfachen. Für allgemeine Aufgaben können die Leute Plugins auf höherer Ebene erstellen, die solche Dinge automatisch für Sie einrichten, aber ich weiß nicht, dass noch jemand für yaml => markdown => html hat.
Um dies zu erreichen, müssen Sie in die Dokumentation von Gatsby eintauchen und sich die Plugins ansehen, um zu verstehen, wie Sie das tun, was Sie tun möchten.