diff options
author | eug-vs <eugene@eug-vs.xyz> | 2022-10-23 01:30:18 +0300 |
---|---|---|
committer | eug-vs <eugene@eug-vs.xyz> | 2022-10-23 01:30:18 +0300 |
commit | ad393f4243a10f9a5ab0ecd8afa5e6c07a088f5d (patch) | |
tree | 8f5758b8c1509269cae297a80f1bbfb10b68fd03 /src/config.ts | |
parent | 21a182985b7fa0c55691d5595b807dfcce2f4631 (diff) | |
download | benzin-next-ad393f4243a10f9a5ab0ecd8afa5e6c07a088f5d.tar.gz |
feat: add pre-render hook
Diffstat (limited to 'src/config.ts')
-rw-r--r-- | src/config.ts | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/config.ts b/src/config.ts index 544d15c..ab0ec12 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,3 +1,4 @@ +import _ from 'lodash'; import { BenzinConfig } from './lib/types'; import nginxAdapter from './lib/nginxAdapter'; @@ -11,6 +12,24 @@ const config: BenzinConfig = { emojiRoot: '/public/emoji', css: '/public/style.css?h=benzin-next-cdn', }, + hooks: { + async preRender(path, data, adapter, cdn) { + if (path.length === 1 && path[0] === 'index') { + // Inject blog preview into home page + const blog = await adapter.getMarkdownSource(cdn, ['blog', 'index']); + const previewContent = blog + .split('\n') + .filter(line => line.startsWith('-')) + .slice(0, 4) + .join('\n'); + + const split = data.split('# Recent blog posts'); + return [split[0], '# Recent blog posts\n', previewContent, split[1]].join(''); + } + + return data; + } + }, }; export default config; |