epiphany/.eleventy.js
2023-12-10 14:51:44 -08:00

50 lines
No EOL
1.4 KiB
JavaScript

const fs = require("fs");
const postcss = require("postcss");
const postcssImportExtGlob = require("postcss-import-ext-glob");
const postcssImport = require("postcss-import");
const postcssPresetEnv = require("postcss-preset-env");
const cssnano = require("cssnano");
const esbuild = require("esbuild");
const automaticNoopener = require("eleventy-plugin-automatic-noopener");
module.exports = function(eleventyConfig) {
eleventyConfig.on("eleventy.before", async () => {
const cssSrc = "./src/style/style.css";
const cssDest = "./dist/style.css";
fs.readFile(cssSrc, (err, css) => {
// noinspection JSCheckFunctionSignatures
postcss([
postcssImportExtGlob,
postcssImport,
postcssPresetEnv,
cssnano
])
.process(css, { from: cssSrc, to: cssDest })
.then(res => {
fs.writeFile(cssDest, res.css, () => true);
});
});
await esbuild.build({
entryPoints: ["src/js/main.js"],
bundle: true,
minify: true,
target: "es2020",
outfile: "dist/main.js"
})
.then(() => console.log("🧳 esbuild done"))
.catch(() => process.exit(1));
});
eleventyConfig.addWatchTarget("./src/style/");
eleventyConfig.addWatchTarget("./src/js/");
eleventyConfig.addPlugin(automaticNoopener, {
noreferrer: true
});
eleventyConfig.addPassthroughCopy("./src/img/");
return { dir: { input: "src", output: "dist" } };
};