-
Notifications
You must be signed in to change notification settings - Fork 0
Steps
Jérôme Beau edited this page Nov 13, 2022
·
9 revisions
The Ssg execute a number of Steps, sequentially (this allows steps to rely on replacements from a previous one).
For instance:
import {SsgConfig, SsgContextImpl, Ssg, ContentStep, CopyStep} from "ssg-api"
const config: SsgConfig = {outDir: "out"}
const context = new SsgContextImpl("fr", {})
new Ssg(config)
.add(new ContentStep(contentConfigs, outputFunc))
.add(dir1SubdirectoriesStep)
.add(dir2SubdirectoriesStep)
.add(...anArrayOfSteps)
.add(new CopyStep(copiesToDo))
.start(context)Ready-to-use steps implementations are:
- CopyStep copies files;
- ContentStep perform replacements in files contents (see predefined replacements).
- DirectoryStep completes a template based on sub-directories, sequentially (to produce a listing of them, typically).
You can create your own steps by implementing the SsgStep interface.
A Step can do anything and return its own results (here a boolean):
class MyStep implements SsgStep {
async execute(context: SsgContext): Promise<boolean> {
context.log("Performing my step")
return true
}
}but it will typically use context.inputFile and context.outFile to perform a transformation.