mirror of
https://github.com/andatoshiki/toshiki-notebook.git
synced 2026-06-06 03:11:22 +00:00
feat: add workflow to generate doc post data for extracting data
This commit is contained in:
parent
c883f02e55
commit
cef4db06a3
@ -1,29 +1,26 @@
|
||||
// from https://github.com/vuejs/blog
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const matter = require('gray-matter')
|
||||
const { createMarkdownRenderer } = require('vitepress')
|
||||
|
||||
const cwd = process.cwd()
|
||||
const md = createMarkdownRenderer(process.cwd())
|
||||
|
||||
module.exports = {
|
||||
watch: path.relative(__dirname, cwd + '/docs/*.md').replace(/\\/g, '/'),
|
||||
async load(asFeed = false) {
|
||||
const md = await createMarkdownRenderer(cwd)
|
||||
const postDir = path.join(cwd, 'docs')
|
||||
watch: '../../docs/*.md',
|
||||
load(asFeed = false) {
|
||||
const postDir = path.resolve(__dirname, '../../docs')
|
||||
return fs
|
||||
.readdirSync(postDir)
|
||||
.filter(file => file.endsWith('.md'))
|
||||
.map(file => getPost(md, file, postDir, asFeed))
|
||||
.sort((a, b) => b.create - a.create)
|
||||
.map(file => getPost(file, postDir, asFeed))
|
||||
.sort((a, b) => b.date.time - a.date.time)
|
||||
}
|
||||
}
|
||||
|
||||
const cache = new Map()
|
||||
|
||||
function getPost(md, file, postDir, asFeed = false) {
|
||||
function getPost(file, postDir, asFeed = false) {
|
||||
const fullePath = path.join(postDir, file)
|
||||
const timestamp = Math.floor(fs.statSync(fullePath).mtimeMs)
|
||||
const timestamp = fs.statSync(fullePath).mtimeMs
|
||||
|
||||
const cached = cache.get(fullePath)
|
||||
if (cached && timestamp === cached.timestamp) {
|
||||
@ -36,10 +33,7 @@ function getPost(md, file, postDir, asFeed = false) {
|
||||
const post = {
|
||||
title: data.title,
|
||||
href: `${file.replace(/\.md$/, '.html')}`,
|
||||
create: +new Date(data.date) || timestamp,
|
||||
update: timestamp,
|
||||
tags: data.tags,
|
||||
cover: data.cover,
|
||||
date: formatDate(data.date),
|
||||
excerpt: md.render(excerpt)
|
||||
}
|
||||
if (asFeed) {
|
||||
@ -54,3 +48,18 @@ function getPost(md, file, postDir, asFeed = false) {
|
||||
})
|
||||
return post
|
||||
}
|
||||
|
||||
function formatDate(date) {
|
||||
if (!(date instanceof Date)) {
|
||||
date = new Date(date)
|
||||
}
|
||||
date.setUTCHours(12)
|
||||
return {
|
||||
time: +date,
|
||||
string: date.toLocaleDateString('en-US', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user