* checkpoint * make emitters async generators * fix * custom font spec * replace spinner, use disk cache for fonts * use readline instead * make og images look nice
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { FilePath, QUARTZ, joinSegments } from "../../util/path"
 | |
| import { QuartzEmitterPlugin } from "../types"
 | |
| import fs from "fs"
 | |
| import { glob } from "../../util/glob"
 | |
| import DepGraph from "../../depgraph"
 | |
| import { dirname } from "path"
 | |
| 
 | |
| export const Static: QuartzEmitterPlugin = () => ({
 | |
|   name: "Static",
 | |
|   async getDependencyGraph({ argv, cfg }, _content, _resources) {
 | |
|     const graph = new DepGraph<FilePath>()
 | |
| 
 | |
|     const staticPath = joinSegments(QUARTZ, "static")
 | |
|     const fps = await glob("**", staticPath, cfg.configuration.ignorePatterns)
 | |
|     for (const fp of fps) {
 | |
|       graph.addEdge(
 | |
|         joinSegments("static", fp) as FilePath,
 | |
|         joinSegments(argv.output, "static", fp) as FilePath,
 | |
|       )
 | |
|     }
 | |
| 
 | |
|     return graph
 | |
|   },
 | |
|   async *emit({ argv, cfg }, _content) {
 | |
|     const staticPath = joinSegments(QUARTZ, "static")
 | |
|     const fps = await glob("**", staticPath, cfg.configuration.ignorePatterns)
 | |
|     const outputStaticPath = joinSegments(argv.output, "static")
 | |
|     await fs.promises.mkdir(outputStaticPath, { recursive: true })
 | |
|     for (const fp of fps) {
 | |
|       const src = joinSegments(staticPath, fp) as FilePath
 | |
|       const dest = joinSegments(outputStaticPath, fp) as FilePath
 | |
|       await fs.promises.mkdir(dirname(dest), { recursive: true })
 | |
|       await fs.promises.copyFile(src, dest)
 | |
|       yield dest
 | |
|     }
 | |
|   },
 | |
| })
 |