UNPKG

kirbyup

Version:

Zero-config bundler for Kirby Panel plugins

35 lines (33 loc) 1.21 kB
import { multilineCommentsRE, singlelineCommentsRE } from "./utils.js"; import MagicString from "magic-string"; //#region src/node/plugins/glob-import.ts /** * Transforms `kirbyup.import(<path>)` to `kirbyup.import(import.meta.glob(<path>, { eager: true }))` */ function kirbyupGlobImportPlugin() { let config; return { name: "kirbyup:glob-import", configResolved(resolvedConfig) { config = resolvedConfig; }, async transform(code) { if (!code.includes("kirbyup.import")) return; const kirbyupImportRE = /\bkirbyup\.import\s*\(\s*('[^']+'|"[^"]+"|`[^`]+`)\s*\)/g; const noCommentsCode = code.replace(multilineCommentsRE, (m) => " ".repeat(m.length)).replace(singlelineCommentsRE, (m) => " ".repeat(m.length)); let s; let match; while (match = kirbyupImportRE.exec(noCommentsCode)) { const { 0: exp, 1: rawPath, index } = match; if (!s) s = new MagicString(code); s.overwrite(index, index + exp.length, `kirbyup.import(import.meta.glob(${rawPath}, { eager: true }))`); } if (s) return { code: s.toString(), map: config.build.sourcemap ? s.generateMap({ hires: true }) : void 0 }; } }; } //#endregion export { kirbyupGlobImportPlugin as default };