refactor: move emit from callback to helper file function (#704)
* Change emit from callback to helpers file function * Update docs, remove commented code, improve type sig
This commit is contained in:
		@@ -216,22 +216,19 @@ export type QuartzEmitterPlugin<Options extends OptionType = undefined> = (
 | 
			
		||||
 | 
			
		||||
export type QuartzEmitterPluginInstance = {
 | 
			
		||||
  name: string
 | 
			
		||||
  emit(
 | 
			
		||||
    ctx: BuildCtx,
 | 
			
		||||
    content: ProcessedContent[],
 | 
			
		||||
    resources: StaticResources,
 | 
			
		||||
    emitCallback: EmitCallback,
 | 
			
		||||
  ): Promise<FilePath[]>
 | 
			
		||||
  emit(ctx: BuildCtx, content: ProcessedContent[], resources: StaticResources): Promise<FilePath[]>
 | 
			
		||||
  getQuartzComponents(ctx: BuildCtx): QuartzComponent[]
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
An emitter plugin must define a `name` field an `emit` function and a `getQuartzComponents` function. `emit` is responsible for looking at all the parsed and filtered content and then appropriately creating files and returning a list of paths to files the plugin created.
 | 
			
		||||
An emitter plugin must define a `name` field, an `emit` function, and a `getQuartzComponents` function. `emit` is responsible for looking at all the parsed and filtered content and then appropriately creating files and returning a list of paths to files the plugin created.
 | 
			
		||||
 | 
			
		||||
Creating new files can be done via regular Node [fs module](https://nodejs.org/api/fs.html) (i.e. `fs.cp` or `fs.writeFile`) or via the `emitCallback` if you are creating files that contain text. The `emitCallback` function is the 4th argument of the emit function. Its interface looks something like this:
 | 
			
		||||
Creating new files can be done via regular Node [fs module](https://nodejs.org/api/fs.html) (i.e. `fs.cp` or `fs.writeFile`) or via the `write` function in `quartz/plugins/emitters/helpers.ts` if you are creating files that contain text. `write` has the following signature:
 | 
			
		||||
 | 
			
		||||
```ts
 | 
			
		||||
export type EmitCallback = (data: {
 | 
			
		||||
export type WriteOptions = (data: {
 | 
			
		||||
  // the build context
 | 
			
		||||
  ctx: BuildCtx
 | 
			
		||||
  // the name of the file to emit (not including the file extension)
 | 
			
		||||
  slug: ServerSlug
 | 
			
		||||
  // the file extension
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user