用Gatsby快速创建一个Markdown格式的博客

“嗯,我想要自己建立一个博客。”
“如果可能,我希望能够直接将Qiita上的文章发布到博客上。”
“更进一步,我希望能够直接将Markdown格式的文件放入博客中。”
“但是我并不想要麻烦的事情,甚至不想要自己设立服务器。”

就算是這樣任性,也能做出一個部落格來。對,用 Gatsby 就行了。

准备工作

假设已经安装了 npm ,我们可以继续进行。
首先,让我们创建一个 Gatsby 项目。
在查看官方教程的同时,让我们一步步地输入命令。

npm install -g gatsby-cli
gatsby new {任意のプロジェクト名}

搞定啦!真快。

進入生成的目錄,執行 npm run develop,就可以瀏覽 Gatsby 的預設頁面了。

如果你想使用 TypeScript,請將 src/pages 目錄中的 js 檔案副檔名改為 tsx。原本就有考慮使用 TypeScript 進行開發,這樣就行了。太讚了。

解析Markdown文件

由于准备工作已经完成,我们立即开始正题吧。
为了解析Markdown,我们将使用gatsby-transformer-remark。
通过npm install gatsby-transformer-remark进行安装,并将其配置添加到gatsby-config.js中。

  plugins: [
    `gatsby-transformer-remark`,
  ],

只要在插件项目中添加描述,它就会自动运行。

然后,我们要添加要读取的Markdown文件。在项目的根目录下的任何位置都可以,但这次我们将其添加到src/markdown下面。
一旦我们成功放置了一些适当的Markdown文件,我们可以再次编辑gatsby-config.js文件,添加对它们的描述。

  plugins: [
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `markdown`,
        path: `${__dirname}/src/markdown`,
      },
    },
  ]

这个设置是为了使得 Gatsby 生态系统能够识别 Markdown 文件。

如果已经完成了以上设置,请在本地环境中启动并访问http://localhost:8000/___graphql。
Gatsby采用了GraphQL,可以通过GraphQL获取各种信息。
对于刚刚添加的Markdown文件也是如此,通过添加上述设置,可以从GraphQL获取它们。
让我们尝试发送以下查询。

query MyQuery {
  allMarkdownRemark {
    nodes {
      html
    }
  }
}

如果没有问题的话,刚刚添加的 Markdown 文件应该可以以 HTML 格式获取。

对于盖茨比的添加

那么,让我们将之前获取的HTML添加到Gatsby中。
通过之前所做的修改,我们现在可以通过GraphQL以HTML格式获取Markdown文件了。
在Gatsby中可以使用GraphQL来实现这一点。

import * as React from "react"
import { graphql } from "gatsby"

import Layout from "../components/layout"

export const query = graphql`
  query MyQuery {
    allMarkdownRemark {
      nodes {
        id
        html
      }
    }
  }
`

const IndexPage = ({data}) => (
  <Layout>
    <div dangerouslySetInnerHTML={{__html: data.allMarkdownRemark.nodes[0].html}}></div>
  </Layout>
)

export default IndexPage

通过指定参数为data,您可以加载通过GraphQL获取的数据。非常简单。
由于数据是以HTML格式获取的,所以只需直接将其输出即可。

在 React 中,我们使用的 dangerouslySetInnerHTML 是一个属性。我之所以特别使用 “dangerously” 这个词,是因为它存在 XSS 的潜在危险性。更详细的信息请参考官方文档。

只需要通过npm run develop等方式来确认结果。
如果设置正确,应该能够正确显示Markdown文件的内容。

最后

這就是說,使用 Gatsby 可以輕鬆創建 Markdown 格式的博客的文章。
除了上述內容外,我還使用了 Github Pages,將它變成了一個簡單的個人博客。
嚴格來說,雖然在 Qiita 上換行符號會被保留,但在我所創建的內容中,只有連續兩個空格才能換行。
不過除此之外,幾乎都能正常運行,如果只是需要換行的話並不難處理。
Gatsby 真的很方便呢。

广告
将在 10 秒后关闭
bannerAds