actions try #1

This commit is contained in:
Cypro Freelance 2024-07-21 00:59:50 +05:30
parent 4d88199408
commit 828d9bd7b0
3 changed files with 79 additions and 1 deletions

27
.github/workflows/mdx-content.yml vendored Normal file
View file

@ -0,0 +1,27 @@
name: Deploy MDX Content
on:
push:
branches:
- main
paths:
- "data/pages/**"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "18"
- name: Install dependencies
run: npm install
- name: Run MDX build or processing script
run: npm run build-mdx

View file

@ -6,7 +6,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
"lint": "next lint",
"build-mdx": "node scripts/build-mdx.js"
},
"dependencies": {
"@hookform/resolvers": "^3.6.0",

50
scripts/build-mdx.js Normal file
View file

@ -0,0 +1,50 @@
const fs = require("fs");
const path = require("path");
const { compile } = require("@mdx-js/mdx");
const { remark } = require("remark");
const { toVFile } = require("to-vfile");
const { format } = require("prettier");
const rehypeStringify = require("rehype-stringify");
const remarkParse = require("remark-parse");
const rehypeParse = require("rehype-parse");
const { unified } = require("unified");
const mdxDir = path.join(__dirname, "../data/pages");
const outputDir = path.join(__dirname, "../data/mdx");
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
fs.readdir(mdxDir, (err, files) => {
if (err) throw err;
files.forEach(async (file) => {
if (path.extname(file) === ".mdx") {
const filePath = path.join(mdxDir, file);
const outputFilePath = path.join(
outputDir,
path.basename(file, ".mdx") + ".html"
);
try {
const mdxContent = fs.readFileSync(filePath, "utf8");
const processedContent = await compile(mdxContent, {
remarkPlugins: [remarkParse],
rehypePlugins: [rehypeStringify],
});
const html = processedContent.toString();
// ig optional?
const formattedHtml = format(html, { parser: "html" });
fs.writeFileSync(outputFilePath, formattedHtml);
console.log(`Processed ${file} -> ${outputFilePath}`);
} catch (error) {
console.error(`Failed to process ${file}:`, error);
}
}
});
});