create-gluon / packages/create-gluon/src / AddComponentOptions
Interface: AddComponentOptions
Properties
confirmOverwrite?
readonlyoptionalconfirmOverwrite?:boolean
cwd?
readonlyoptionalcwd?:string
dryRun?
readonlyoptionaldryRun?:boolean
kind
readonlykind:"atom"|"molecule"|"organism"|"element"|"headless"
name
readonlyname:string
overwrite?
readonlyoptionaloverwrite?:boolean
path?
readonlyoptionalpath?:string
root?
readonlyoptionalroot?:string
tagName?
readonlyoptionaltagName?:string
Example
Choose the generated kind, PascalCase name, safe project-relative location, optional element tag, and explicit mutation policy:
import { PassThrough } from 'node:stream';
import {
AddComponentError,
addComponent,
addComponentHelpText,
componentKindHelpText,
componentKinds,
parseAddComponentArguments,
planComponent,
runAddComponentCli,
type AddComponentAction,
type AddComponentErrorCode,
type AddComponentOperation,
type AddComponentOptions,
type AddComponentResult,
type ComponentKind,
type ParsedAddComponentArguments,
} from 'create-gluon';
const parsed: ParsedAddComponentArguments = parseAddComponentArguments([
'PurchaseAction', '--kind', 'molecule', '--root', '/tmp/shop', '--dry-run', '--yes',
]);
const kind: ComponentKind = parsed.kind ?? componentKinds[0];
const options = {
kind,
name: parsed.name!,
root: parsed.root,
dryRun: true,
} satisfies AddComponentOptions;
const planned: Promise<AddComponentResult> = planComponent(options);
const generated: Promise<AddComponentResult> = addComponent(options);
const operation = { path: 'src/components/index.ts', action: 'update', bytes: 80 } satisfies AddComponentOperation;
const action: AddComponentAction = operation.action;
const output = new PassThrough();
await runAddComponentCli(['--help'], { output, cwd: '/tmp/shop' });
console.log(planned, generated, action, addComponentHelpText, componentKindHelpText);
try { throw new AddComponentError('FILE_COLLISION', 'existing component'); } catch (error) {
if (error instanceof AddComponentError) {
const code: AddComponentErrorCode = error.code;
console.error(code);
}
}