UNPKG

defuss-ssg

Version:

A simple static site generator (SSG) built with defuss.

95 lines (91 loc) 2.73 kB
'use strict'; var serve = require('./serve-KTJqW3m0.cjs'); var node_path = require('node:path'); var node_fs = require('node:fs'); var node_child_process = require('node:child_process'); require('chokidar'); require('express'); require('serve-static'); require('esbuild'); require('rehype-katex'); require('rehype-stringify'); require('remark-frontmatter'); require('remark-math'); require('remark-gfm'); require('remark-parse'); require('remark-rehype'); require('remark-mdx-frontmatter'); require('./tailwind-C4AuHybm.cjs'); require('@mdx-js/esbuild'); require('fast-glob'); require('defuss/server'); require('node:fs/promises'); require('node:url'); const setup = async (projectDir) => { const projectDirStatus = serve.validateProjectDir(projectDir); if (projectDirStatus.code !== "OK") return projectDirStatus; const packageJsonPath = node_path.join(projectDir, "package.json"); if (!node_fs.existsSync(packageJsonPath)) { return { code: "MISSING_PACKAGE_JSON", message: `package.json not found in ${projectDir}` }; } let packageJson; try { packageJson = JSON.parse(node_fs.readFileSync(packageJsonPath, "utf-8")); } catch (error) { return { code: "INVALID_JSON", message: `Error reading package.json in ${projectDir}: ${error.message}` }; } const packageManager = packageJson.packageManager || "npm"; const pm = packageManager.split("@")[0]; const validPMs = ["npm", "yarn", "pnpm", "bun"]; if (!validPMs.includes(pm)) { return { code: "UNSUPPORTED_PM", message: `Unsupported package manager: ${pm}` }; } console.log(`Setting up project in ${projectDir} using ${pm}...`); try { node_child_process.execSync(`${pm} install`, { cwd: projectDir, stdio: "inherit" }); console.log("Dependencies installed successfully."); } catch (error) { return { code: "INSTALL_FAILED", message: `Failed to install dependencies: ${error.message}` }; } return { code: "OK", message: "Setup completed successfully" }; }; (async () => { const args = process.argv.slice(2); const command = args[0]; const folder = args[1]; const usage = "Usage: defuss-ssg <build|serve> <folder>"; if (!command || !folder) { console.error(usage); process.exit(1); } const projectDir = node_path.resolve(folder); await setup(projectDir); if (command === "build") { console.log(`Building ${folder}...`); await serve.build({ projectDir, debug: true, mode: "build" }); } else if (command === "serve") { console.log(`Serving ${folder}...`); await serve.serve({ projectDir, debug: true}); } else { console.error(usage); process.exit(1); } })();