Newer
Older
#!/usr/bin/env node
"use strict";
const fs = require("fs");
const browserify = require("browserify");
.pipe(fs.createWriteStream(`${curDir}/public/main.js`));
// Handle subpages
function getPageHtml(pagename) {
return `
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<link href="../../style/style.css" rel="stylesheet" />
</head>
<body>
<main></main>
</body>
<script type="text/javascript" src="./${pagename}.js"></script>
</html>
`;
}
const pages = fs.readdirSync(`${curDir}/src/pages`);
for (const p of pages) {
const fPath = `${curDir}/src/pages/${p}`;
const targetDirPath = `${curDir}/public/${p}`;
if (!fs.existsSync(targetDirPath)) {
fs.mkdirSync(targetDirPath);
}
const b = browserify();
b.add(fPath)
.bundle()
.pipe(fs.createWriteStream(`${targetDirPath}/${p}.js`));
const page = fs.createWriteStream(`${targetDirPath}/index.html`);
page.write(getPageHtml(p));
}
// If pages have been deleted in source, remove them in output directory too.
for (const dir of fs.readdirSync(`${curDir}/public`).filter(f => {
const stats = fs.statSync(`${curDir}/public/${f}`);
return stats.isDirectory();
})) {
if (!pages.includes(dir)) {
const dPath = `${curDir}/public/${dir}`;
try {
const nestedFiles = fs.readdirSync(dPath);
for (const nf of nestedFiles) {
fs.unlinkSync(`${dPath}/${nf}`);
}
fs.rmdirSync(dPath);
} catch (error) {
console.error(error);
}
}