Gatsby 是 React + GraphQL based的網站/blog生成器. 可以用 React方式修改UI.
https://www.gatsbyjs.org/tutorial/, 建議 tutorial
看完, 走完就有一個可以寫Markdown file的blog, 但沒什麼UI, /doc
部份需要時再看
https://github.com/grimmer0125/gatsby-blog, 目前使用的的, 修改自lumen. 改的:
disqusShortname: 'grimmer'
gatsby-plugin-favicon
, 在gatsby-config.js
裡設定)[非必要]也可以學習一下 GraphQL
layouts/index.jsx
跟 pages/index.jsx
, 參考 https://www.gatsbyjs.org/tutorial/part-three/#our-first-layout-component, Gatsby使用了 react-router
gatsby develop
會使用到 gatsby-node.js
, 而在其中可以設定讓它使用gatsby的外掛把 Markdown files的資料轉成 GraphQL query data source (也可在gatsby-node.js
插入一些資料). 而進而使用 React High order component
的方式把資料傳到 page-template.jsx
的React元件的props, 另外在gatsby-node.js
也是動態新增此markdowm對應到的react page with url path, 參考 https://www.gatsbyjs.org/tutorial/part-six/.pages/
下新增 react page 在再裡面使用 GraphQL query, 但這做法缺點是url path是固定的 (就是此react page js/jsx檔案的folder path). 參考 https://www.gatsbyjs.org/tutorial/part-six/#transformer-pluginsexport default graphql(gql
query content)(TodoApp);
這樣的high order component
設定, 但Gatsby
則省略了 )(TodoApp);
, gatsby develop
會自動在runtime時補上.Gatsby
是使用到Webpack, 故改完文章頁面會自動更新.Gatsby
local dev時, 有起一個 GraphQL server, 故可使用 GraphiQL
去測試 每個頁面使用到 GraphQL query部份. ref: https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql,Type gatsby new myblog https://github.com/grimmer0125/gatsby-blog
. It will git clone and npm install and remove git history.
pages/articles/
下新增新文章的folder. folder檔名需要是日期---folderName
, 無---
的話 gatsby-node.js
會parse exception.Metadata
需包含以及需注意事項: https://github.com/grimmer0125/gatsby-blog/issues/1Metadata
的彈性. e.g. 有些可自動判斷, 像是 title
由 folder名稱自動抓取.In the project root folder (e.g. myblog), type gatsby develop
.