| title | Post One |
|---|---|
| date | 2020–02–28T22:19:00Z |
| description | My reasons for starting a blog. |
Really it's just great
| mkdir node-ssg && cd node-ssg | |
| npm init -y |
| { | |
| "name": "planar", | |
| "version": "1.0.0", | |
| "description": "", | |
| "main": "index.js", | |
| "scripts": { | |
| "build": "node ./src/index.js" | |
| }, | |
| "keywords": [], | |
| "author": "", |
| const config = { | |
| dev: { | |
| postsdir: "./content", | |
| outdir: "./public" | |
| } | |
| }; | |
| module.exports = config; |
| const config = require("./config"); | |
| const posts = fs | |
| .readdirSync(config.dev.postsdir) | |
| .map(post => post.slice(0, -3)); | |
| console.log(posts); |
| const config = require("./config"); | |
| const fm = require("front-matter"); | |
| const marked = require("marked"); | |
| const createPost = postPath => { | |
| const data = fs.readFileSync(`${config.dev.postsdir}/${postPath}.md`, "utf8"); | |
| const content = fm(data); | |
| content.body = marked(content.body); | |
| content.path = postPath; | |
| return content; |
| const config = require("./config"); | |
| const createPost = require("./posts.js"); | |
| const posts = fs | |
| .readdirSync(config.dev.postsdir) | |
| .map(post => post.slice(0, -3)) | |
| .map(post => postMethods.createPost(post)); | |
| console.log(posts); |
| const marked = require("marked"); | |
| marked.setOptions({ | |
| renderer: new marked.Renderer(), | |
| highlight: function(code, language) { | |
| const hljs = require("highlight.js"); | |
| const validLanguage = hljs.getLanguage(language) ? language : "plaintext"; | |
| return hljs.highlight(validLanguage, code).value; | |
| }, | |
| pedantic: false, |
| const posthtml = data => ` | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
| <meta name="description" content="${data.attributes.description}" /> | |
| <title>${data.attributes.title}</title> | |
| </head> | |
| <body> |
| const createPosts = posts => { | |
| posts.forEach(post => { | |
| if (!fs.existsSync(`${config.dev.outdir}/${post.path}`)) | |
| fs.mkdirSync(`${config.dev.outdir}/${post.path}`); | |
| fs.writeFile( | |
| `${config.dev.outdir}/${post.path}/index.html`, | |
| posthtml(post), | |
| e => { | |
| if (e) throw e; |