| | |
| | | import { randomUUID } from "crypto" |
| | | import { Mutex } from "async-mutex" |
| | | import { CreateArgv } from "./args.js" |
| | | import { globby } from "globby" |
| | | import { |
| | | exitIfCancel, |
| | | escapePath, |
| | |
| | | let linkResolutionStrategy = argv.links?.toLowerCase() |
| | | const sourceDirectory = argv.source |
| | | |
| | | // If all cmd arguments were provided, check if theyre valid |
| | | // If all cmd arguments were provided, check if they're valid |
| | | if (setupStrategy && linkResolutionStrategy) { |
| | | // If setup isn't, "new", source argument is required |
| | | if (setupStrategy !== "new") { |
| | |
| | | type: "css-text", |
| | | cssImports: true, |
| | | }), |
| | | sassPlugin({ |
| | | filter: /\.inline\.scss$/, |
| | | type: "css", |
| | | cssImports: true, |
| | | }), |
| | | { |
| | | name: "inline-script-loader", |
| | | setup(build) { |
| | |
| | | } |
| | | |
| | | if (cleanupBuild) { |
| | | await cleanupBuild() |
| | | console.log(chalk.yellow("Detected a source code change, doing a hard rebuild...")) |
| | | await cleanupBuild() |
| | | } |
| | | |
| | | const result = await ctx.rebuild().catch((err) => { |
| | |
| | | source: "**/*.*", |
| | | headers: [{ key: "Content-Disposition", value: "inline" }], |
| | | }, |
| | | { |
| | | source: "**/*.webp", |
| | | headers: [{ key: "Content-Type", value: "image/webp" }], |
| | | }, |
| | | // fixes bug where avif images are displayed as text instead of images (future proof) |
| | | { |
| | | source: "**/*.avif", |
| | | headers: [{ key: "Content-Type", value: "image/avif" }], |
| | | }, |
| | | ], |
| | | }) |
| | | const status = res.statusCode |
| | |
| | | ), |
| | | ) |
| | | console.log("hint: exit with ctrl+c") |
| | | const paths = await globby(["**/*.ts", "**/*.tsx", "**/*.scss", "package.json"]) |
| | | chokidar |
| | | .watch(["**/*.ts", "**/*.tsx", "**/*.scss", "package.json"], { |
| | | ignoreInitial: true, |
| | | }) |
| | | .on("all", async () => { |
| | | build(clientRefresh) |
| | | }) |
| | | .watch(paths, { ignoreInitial: true }) |
| | | .on("add", () => build(clientRefresh)) |
| | | .on("change", () => build(clientRefresh)) |
| | | .on("unlink", () => build(clientRefresh)) |
| | | } else { |
| | | await build(() => {}) |
| | | ctx.dispose() |