Hai semua, bisakah saya mendapatkan bantuan untuk menulis penurunan harga di halaman yaml? Saya mencoba beralih dari jekyll ke gatsby, tetapi salah satu fitur bagus dari jekyll adalah bahasa templating cair yang memungkinkan Anda meneruskan string apa pun (misalnya dari file yaml) melalui pipa markdownify
. Ini berguna ketika saya memiliki beberapa informasi yang saya inginkan terstruktur pada halaman tetapi diatur bersama dalam file yaml. Contoh:
- 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 ...
Pada catatan yang sama, memuat gambar dengan cara ini tampaknya tidak mungkin, saya memiliki solusi peretasan untuk itu, seperti mengimpor semua gambar di tempat lain dalam file, tetapi apakah ada cara untuk memberi tahu webpack untuk menyalin gambar apa pun di pages/
folder bahkan jika mereka 'tampak' tidak digunakan?
Pada gambar, jika Anda menggunakan gatsby-source-filesystem + gatsby-transformer-yaml + gatsby-transformer-sharp/gatsby-plugin-sharp, Anda dapat mengkueri gambar ini.
Lihat misalnya bagaimana gatsbyjs.org menanyakan avatar penulis
https://github.com/gatsbyjs/gatsby/blob/master/www/src/templates/template-blog-post.js#L306 & https://github.com/gatsbyjs/gatsby/blob/master/docs/ blog/penulis.yaml
Saat menjalankan bidang yaml melalui penurunan harga — Anda dapat membuat sub-simpul yang Anda tentukan jenis medianya sebagai penurunan harga dan kemudian gatsby-transformer-remark akan mengonversinya menjadi html misalnya https://github.com/gatsbyjs/gatsby/blob/d855150dadb91e80b836d2bd5e160cb0b84f5e2a/packages /gatsby-source-contentful/src/normalize.js#L143
Maaf jika itu tingkat super tinggi dan tidak dapat ditindaklanjuti. Gatsby berfokus untuk mempermudah penyiapan jalur transformasi data kustom. Untuk tugas-tugas umum, orang dapat membuat plugin tingkat tinggi yang mengatur hal-hal seperti ini untuk Anda secara otomatis, tetapi saya tidak tahu apakah ada yang belum memiliki yaml => markdown => html.
Untuk mewujudkannya, Anda harus mempelajari dokumen Gatsby dan melihat plugin untuk memahami cara melakukan apa yang ingin Anda lakukan.
terima kasih atas sarannya, saya rasa saya tidak siap untuk menghabiskan banyak waktu untuk membuat plugin gatsby sekarang. Saya punya solusi naif saya seperti:
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)
}))
ini masih bisa terjadi selama tahap pembuatan sehingga berfungsi untuk tujuan saya. Saya pikir masalahnya adalah graphql ditujukan untuk membangun data terlebih dahulu dan menggunakan templat serupa untuk banyak halaman. Saya mengikuti struktur 'modul' seperti:
```
halaman/
satu halaman/
index.js
_data.yml
aktiva/
img1.png
halaman lain/
...
Cara sederhana untuk melakukannya adalah dengan mengkompilasi bidang penurunan harga menggunakan onCreateNode. https://www.gatsbyjs.org/tutorial/part-four/#programmatically -creating-pages-from-data dan tambahkan bidang yang dikompilasi sebagai bidang baru dengan createNodeField
.
Anda cukup melakukannya di gatsby-node.js . Anda
Komentar yang paling membantu
Pada gambar, jika Anda menggunakan gatsby-source-filesystem + gatsby-transformer-yaml + gatsby-transformer-sharp/gatsby-plugin-sharp, Anda dapat mengkueri gambar ini.
Lihat misalnya bagaimana gatsbyjs.org menanyakan avatar penulis
https://github.com/gatsbyjs/gatsby/blob/master/www/src/templates/template-blog-post.js#L306 & https://github.com/gatsbyjs/gatsby/blob/master/docs/ blog/penulis.yaml
Saat menjalankan bidang yaml melalui penurunan harga — Anda dapat membuat sub-simpul yang Anda tentukan jenis medianya sebagai penurunan harga dan kemudian gatsby-transformer-remark akan mengonversinya menjadi html misalnya https://github.com/gatsbyjs/gatsby/blob/d855150dadb91e80b836d2bd5e160cb0b84f5e2a/packages /gatsby-source-contentful/src/normalize.js#L143
Maaf jika itu tingkat super tinggi dan tidak dapat ditindaklanjuti. Gatsby berfokus untuk mempermudah penyiapan jalur transformasi data kustom. Untuk tugas-tugas umum, orang dapat membuat plugin tingkat tinggi yang mengatur hal-hal seperti ini untuk Anda secara otomatis, tetapi saya tidak tahu apakah ada yang belum memiliki yaml => markdown => html.
Untuk mewujudkannya, Anda harus mempelajari dokumen Gatsby dan melihat plugin untuk memahami cara melakukan apa yang ingin Anda lakukan.