diff --git a/.gitignore b/.gitignore index bfc5219..9bb1fdc 100644 --- a/.gitignore +++ b/.gitignore @@ -65,5 +65,6 @@ node_modules/ # dotenv environment variables file .env -.dist -temp \ No newline at end of file +dist +temp +bin \ No newline at end of file diff --git a/build.js b/build.js deleted file mode 100644 index 7425795..0000000 --- a/build.js +++ /dev/null @@ -1,97 +0,0 @@ -import * as fs from "fs"; -import { toHtml } from "./markdown.js"; - -const paths = { - output: ".dist", - notes: { - root: "notes", - assets: "assets", - note: "note.md", - }, - templates: { - root: "templates", - note: "note.html", - index: "index.html", - notFound: "404.html", - }, -}; - -if (fs.readdirSync(".").includes(paths.output)) { - fs.rmSync(paths.output, { recursive: true, force: true }); - console.log("Starting rebuild"); -} else { - console.log("Starting build"); -} -fs.mkdirSync(paths.output); - -console.log("Indexing content.."); -const directoryNames = fs.readdirSync(paths.notes.root); -const manifest = directoryNames.map((noteDirectory) => ({ - directoryName: noteDirectory, - name: noteDirectory, - markdown: fs.readFileSync( - `${paths.notes.root}/${noteDirectory}/${paths.notes.note}`, - { encoding: "utf-8" } - ), - assetDirectoryPath: `${paths.notes.root}/${noteDirectory}/${paths.notes.assets}`, - publicAssetDirectoryPath: `/${noteDirectory}_`, -})); - -console.log("Parsing content.."); -manifest.forEach((m) => { - const notePath = `${paths.templates.root}/${paths.templates.note}`; - let htmlTemplate = fs.readFileSync(notePath, { - encoding: "utf-8", - }); - htmlTemplate = htmlTemplate.replace( - "{{markdown}}", - toHtml(m.markdown, m.publicAssetDirectoryPath) - ); - fs.writeFileSync(`${paths.output}/${m.directoryName}.html`, htmlTemplate, { - encoding: "utf-8", - flag: "ax", - }); - - if (!fs.existsSync(m.assetDirectoryPath)) return; - const assetsList = fs.readdirSync(m.assetDirectoryPath); - assetsList.forEach((assetName) => - fs.cpSync( - `${m.assetDirectoryPath}/${assetName}`, - `${paths.output}/${m.name}_${assetName}` - ) - ); -}); - -console.log("Moving static templates.."); -[paths.templates.notFound].forEach((filename) => { - fs.copyFileSync( - `${paths.templates.root}/${filename}`, - `${paths.output}/${filename}` - ); -}); - -console.log("Building startpage.."); -let htmlTemplate = fs.readFileSync( - `${paths.templates.root}/${paths.templates.index}`, - { - encoding: "utf-8", - } -); - -const links = manifest - .map((m) => `${m.name}`) - .reverse(); - -const unorderedListItems = links.map((l) => `
  • ${l}
  • `).join("\r\n"); -const html = ` -