UNPKG

lazy-js-utils

Version:

A collection of lazy-loaded JavaScript utilities for efficient development

50 lines (47 loc) 1.5 kB
import process from "node:process"; import path from "node:path"; import fsp from "node:fs/promises"; //#region src/vite/vitePluginCopyHtml.ts /** * 将模板html内容拷贝到最终结果 * @param { string } template_url html url * @returns Plugin */ async function vitePluginCopyHtml(template_url) { let content = await fsp.readFile(path.resolve(process.cwd(), template_url), "utf-8"); return { name: "vite-plugin-copy-html", writeBundle(options, data) { const outDir = `${options.dir}/index.html`; const links = []; const scripts = []; for (const key in data) if (key.endsWith(".css")) links.push(key); else if (key.endsWith(".js")) scripts.push(key); if (links.length) content = content.replace(/<\/head>/, () => `</head> ${links.map((link) => `<link rel="stylesheet" href="/${link}">`)}`); if (scripts.length) content = content.replace(/<\/body>/, () => ` ${scripts.map((script) => `<script src="/${script}" type="module"></script>`)} </body>`); fsp.writeFile(path.resolve(outDir), content, "utf-8"); } }; } //#endregion //#region src/vite/vitePluginExport.ts /** * 将一些vite不能处理的文件导出 * @param { string } config 后缀文件 * @returns vitePlugin */ function vitePluginExport(config) { return { name: "vite-plugin-export", transform(src, id) { if (id.endsWith(config)) return { code: `export default ${JSON.stringify(src)}`, map: null }; } }; } //#endregion export { vitePluginCopyHtml, vitePluginExport };