Files
astroplate/scripts/jsonGenerator.js
T
2023-04-17 12:50:29 +06:00

45 lines
1.2 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const matter = require("gray-matter");
const config = require("../src/config/config.json");
const { blog_folder } = config.settings;
const jsonDir = "./.json";
// get data from markdown
const getData = (folder) => {
const getPath = fs.readdirSync(path.join(folder));
const sanitizeData = getPath.filter((item) => item.includes(".md"));
const filterData = sanitizeData.filter((item) => item.match(/^(?!_)/));
const getData = filterData.map((filename) => {
const file = fs.readFileSync(path.join(folder, filename), "utf-8");
const { data } = matter(file);
const content = matter(file).content;
const slug = data.slug ? data.slug : filename.replace(".md", "");
return {
frontmatter: data,
content: content,
slug: slug,
};
});
const publishedPages = getData.filter(
(page) => !page.frontmatter?.draft && page
);
return publishedPages;
};
// get post data
const posts = getData(`src/content/${blog_folder}`);
try {
// creare folder if it doesn't exist
if (!fs.existsSync(jsonDir)) {
fs.mkdirSync(jsonDir);
}
// create posts.json file
fs.writeFileSync(`${jsonDir}/posts.json`, JSON.stringify(posts));
} catch (err) {
console.error(err);
}