* Stop mutating resources param in ComponentResources emitter * Add done rebuilding log for fast rebuilds * Move google font loading to Head component * Simplify code and fix comment
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { StaticResources } from "../util/resources"
 | 
						|
import { FilePath, FullSlug } from "../util/path"
 | 
						|
import { BuildCtx } from "../util/ctx"
 | 
						|
 | 
						|
export function getStaticResourcesFromPlugins(ctx: BuildCtx) {
 | 
						|
  const staticResources: StaticResources = {
 | 
						|
    css: [],
 | 
						|
    js: [],
 | 
						|
  }
 | 
						|
 | 
						|
  for (const transformer of ctx.cfg.plugins.transformers) {
 | 
						|
    const res = transformer.externalResources ? transformer.externalResources(ctx) : {}
 | 
						|
    if (res?.js) {
 | 
						|
      staticResources.js.push(...res.js)
 | 
						|
    }
 | 
						|
    if (res?.css) {
 | 
						|
      staticResources.css.push(...res.css)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // if serving locally, listen for rebuilds and reload the page
 | 
						|
  if (ctx.argv.serve) {
 | 
						|
    const wsUrl = ctx.argv.remoteDevHost
 | 
						|
      ? `wss://${ctx.argv.remoteDevHost}:${ctx.argv.wsPort}`
 | 
						|
      : `ws://localhost:${ctx.argv.wsPort}`
 | 
						|
 | 
						|
    staticResources.js.push({
 | 
						|
      loadTime: "afterDOMReady",
 | 
						|
      contentType: "inline",
 | 
						|
      script: `
 | 
						|
            const socket = new WebSocket('${wsUrl}')
 | 
						|
            // reload(true) ensures resources like images and scripts are fetched again in firefox
 | 
						|
            socket.addEventListener('message', () => document.location.reload(true))
 | 
						|
          `,
 | 
						|
    })
 | 
						|
  }
 | 
						|
 | 
						|
  return staticResources
 | 
						|
}
 | 
						|
 | 
						|
export * from "./transformers"
 | 
						|
export * from "./filters"
 | 
						|
export * from "./emitters"
 | 
						|
 | 
						|
declare module "vfile" {
 | 
						|
  // inserted in processors.ts
 | 
						|
  interface DataMap {
 | 
						|
    slug: FullSlug
 | 
						|
    filePath: FilePath
 | 
						|
    relativePath: FilePath
 | 
						|
  }
 | 
						|
}
 |