minify js scripts
This commit is contained in:
parent
e1b6a0014c
commit
2e1374bf93
@ -14,6 +14,7 @@ import { StaticResources } from "../../util/resources"
|
|||||||
import { QuartzComponent } from "../../components/types"
|
import { QuartzComponent } from "../../components/types"
|
||||||
import { googleFontHref, joinStyles } from "../../util/theme"
|
import { googleFontHref, joinStyles } from "../../util/theme"
|
||||||
import { Features, transform } from "lightningcss"
|
import { Features, transform } from "lightningcss"
|
||||||
|
import { transform as transpile } from "esbuild"
|
||||||
|
|
||||||
type ComponentResources = {
|
type ComponentResources = {
|
||||||
css: string[]
|
css: string[]
|
||||||
@ -56,9 +57,16 @@ function getComponentResources(ctx: BuildCtx): ComponentResources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function joinScripts(scripts: string[]): string {
|
async function joinScripts(scripts: string[]): Promise<string> {
|
||||||
// wrap with iife to prevent scope collision
|
// wrap with iife to prevent scope collision
|
||||||
return scripts.map((script) => `(function () {${script}})();`).join("\n")
|
const script = scripts.map((script) => `(function () {${script}})();`).join("\n")
|
||||||
|
|
||||||
|
// minify with esbuild
|
||||||
|
const res = await transpile(script, {
|
||||||
|
minify: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
return res.code
|
||||||
}
|
}
|
||||||
|
|
||||||
function addGlobalPageResources(
|
function addGlobalPageResources(
|
||||||
@ -165,8 +173,11 @@ export const ComponentResources: QuartzEmitterPlugin<Options> = (opts?: Partial<
|
|||||||
addGlobalPageResources(ctx, resources, componentResources)
|
addGlobalPageResources(ctx, resources, componentResources)
|
||||||
|
|
||||||
const stylesheet = joinStyles(ctx.cfg.configuration.theme, ...componentResources.css, styles)
|
const stylesheet = joinStyles(ctx.cfg.configuration.theme, ...componentResources.css, styles)
|
||||||
const prescript = joinScripts(componentResources.beforeDOMLoaded)
|
const [prescript, postscript] = await Promise.all([
|
||||||
const postscript = joinScripts(componentResources.afterDOMLoaded)
|
joinScripts(componentResources.beforeDOMLoaded),
|
||||||
|
joinScripts(componentResources.afterDOMLoaded),
|
||||||
|
])
|
||||||
|
|
||||||
const fps = await Promise.all([
|
const fps = await Promise.all([
|
||||||
emit({
|
emit({
|
||||||
slug: "index" as FullSlug,
|
slug: "index" as FullSlug,
|
||||||
|
Loading…
Reference in New Issue
Block a user