---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../modules.md) / scaffold

# scaffold

Scaffold generation for B2C Commerce projects.

This module provides functions for discovering, validating, and executing
project scaffolds (templates) for cartridges, custom APIs, Page Designer
components, jobs, and other B2C artifacts.

## Scaffold Discovery

Scaffolds are discovered from multiple sources in priority order:

1. **Project scaffolds** (`.b2c/scaffolds/`) - highest priority
2. **Plugin scaffolds** (via `b2c:scaffold-providers` hook)
3. **User scaffolds** (`~/.b2c/scaffolds/`)
4. **Built-in scaffolds** - lowest priority

Later sources override earlier ones by name.

- [ScaffoldRegistry](classes/ScaffoldRegistry.md) - Registry for managing scaffold discovery
- [createScaffoldRegistry](functions/createScaffoldRegistry.md) - Create a new registry instance

## Scaffold Generation

- [generateFromScaffold](functions/generateFromScaffold.md) - Generate files from a scaffold
- [previewScaffold](functions/previewScaffold.md) - Preview generation without writing files

## Template Engine

- [ScaffoldEngine](classes/ScaffoldEngine.md) - EJS-based template rendering engine

## Validation

- [validateScaffoldManifest](functions/validateScaffoldManifest.md) - Validate a scaffold manifest
- [validateParameters](functions/validateParameters.md) - Validate parameter values

## Usage

```typescript
import {
  createScaffoldRegistry,
  generateFromScaffold,
} from '@salesforce/b2c-tooling-sdk/scaffold';

// Create registry and find scaffolds
const registry = createScaffoldRegistry();
const scaffolds = await registry.getScaffolds();

// Get a specific scaffold
const cartridgeScaffold = await registry.getScaffold('cartridge');

// Generate files
const result = await generateFromScaffold(cartridgeScaffold, {
  outputDir: './output',
  variables: { cartridgeName: 'app_custom' },
});
```

## Classes

- [ScaffoldEngine](classes/ScaffoldEngine.md)
- [ScaffoldRegistry](classes/ScaffoldRegistry.md)

## Interfaces

- [FileMapping](interfaces/FileMapping.md)
- [FileModification](interfaces/FileModification.md)
- [GeneratedFile](interfaces/GeneratedFile.md)
- [JsonMergeOptions](interfaces/JsonMergeOptions.md)
- [ParameterResolutionError](interfaces/ParameterResolutionError.md)
- [ParameterValidationError](interfaces/ParameterValidationError.md)
- [ParameterValidationResult](interfaces/ParameterValidationResult.md)
- [ResolvedParameters](interfaces/ResolvedParameters.md)
- [ResolvedParameterSchema](interfaces/ResolvedParameterSchema.md)
- [ResolveOutputDirectoryOptions](interfaces/ResolveOutputDirectoryOptions.md)
- [ResolveParametersOptions](interfaces/ResolveParametersOptions.md)
- [Scaffold](interfaces/Scaffold.md)
- [ScaffoldChoice](interfaces/ScaffoldChoice.md)
- [ScaffoldContext](interfaces/ScaffoldContext.md)
- [ScaffoldDiscoveryOptions](interfaces/ScaffoldDiscoveryOptions.md)
- [ScaffoldGenerateOptions](interfaces/ScaffoldGenerateOptions.md)
- [ScaffoldGenerateResult](interfaces/ScaffoldGenerateResult.md)
- [ScaffoldManifest](interfaces/ScaffoldManifest.md)
- [ScaffoldParameter](interfaces/ScaffoldParameter.md)
- [ScaffoldProvider](interfaces/ScaffoldProvider.md)
- [ScaffoldRegistryOptions](interfaces/ScaffoldRegistryOptions.md)
- [ScaffoldTransformer](interfaces/ScaffoldTransformer.md)
- [SourceDetectionResult](interfaces/SourceDetectionResult.md)
- [SourceResult](interfaces/SourceResult.md)
- [TemplateContext](interfaces/TemplateContext.md)
- [TemplateHelpers](interfaces/TemplateHelpers.md)
- [TextInsertOptions](interfaces/TextInsertOptions.md)
- [ValidateScaffoldOptions](interfaces/ValidateScaffoldOptions.md)
- [ValidationIssue](interfaces/ValidationIssue.md)
- [ValidationResult](interfaces/ValidationResult.md)

## Type Aliases

- [DynamicParameterSource](type-aliases/DynamicParameterSource.md)
- [OverwriteBehavior](type-aliases/OverwriteBehavior.md)
- [ScaffoldCategory](type-aliases/ScaffoldCategory.md)
- [ScaffoldParameterType](type-aliases/ScaffoldParameterType.md)
- [ScaffoldProviderPriority](type-aliases/ScaffoldProviderPriority.md)
- [ScaffoldSource](type-aliases/ScaffoldSource.md)
- [ValidationIssueSeverity](type-aliases/ValidationIssueSeverity.md)

## Variables

- [HOOK\_POINTS](variables/HOOK_POINTS.md)
- [SCAFFOLDS\_DATA\_DIR](variables/SCAFFOLDS_DATA_DIR.md)

## Functions

- [appendContent](functions/appendContent.md)
- [camelCase](functions/camelCase.md)
- [cartridgePathForDestination](functions/cartridgePathForDestination.md)
- [checkOrphanedFiles](functions/checkOrphanedFiles.md)
- [checkTemplateFiles](functions/checkTemplateFiles.md)
- [createScaffoldRegistry](functions/createScaffoldRegistry.md)
- [createTemplateContext](functions/createTemplateContext.md)
- [createTemplateHelpers](functions/createTemplateHelpers.md)
- [detectSourceFromPath](functions/detectSourceFromPath.md)
- [evaluateCondition](functions/evaluateCondition.md)
- [generateFromScaffold](functions/generateFromScaffold.md)
- [getParameterSchemas](functions/getParameterSchemas.md)
- [insertAfter](functions/insertAfter.md)
- [insertBefore](functions/insertBefore.md)
- [isRemoteSource](functions/isRemoteSource.md)
- [isValidParameterName](functions/isValidParameterName.md)
- [isValidScaffoldName](functions/isValidScaffoldName.md)
- [kebabCase](functions/kebabCase.md)
- [mergeJson](functions/mergeJson.md)
- [parseParameterOptions](functions/parseParameterOptions.md)
- [pascalCase](functions/pascalCase.md)
- [prependContent](functions/prependContent.md)
- [previewScaffold](functions/previewScaffold.md)
- [renderPathTemplate](functions/renderPathTemplate.md)
- [renderTemplate](functions/renderTemplate.md)
- [resolveLocalSource](functions/resolveLocalSource.md)
- [resolveOutputDirectory](functions/resolveOutputDirectory.md)
- [resolveRemoteSource](functions/resolveRemoteSource.md)
- [resolveScaffoldParameters](functions/resolveScaffoldParameters.md)
- [snakeCase](functions/snakeCase.md)
- [validateAgainstSource](functions/validateAgainstSource.md)
- [validateEjsSyntax](functions/validateEjsSyntax.md)
- [validateParameters](functions/validateParameters.md)
- [validateScaffoldDirectory](functions/validateScaffoldDirectory.md)
- [validateScaffoldManifest](functions/validateScaffoldManifest.md)
