create-gluon


create-gluon / packages/create-gluon/src / ScaffoldOptions

Interface: ScaffoldOptions

Extends

Properties

cwd?

readonly optional cwd?: string


directory

readonly directory: string


force?

readonly optional force?: boolean


name?

readonly optional name?: string


router?

readonly optional router?: boolean

Inherited from

GluonFeatures.router


ssr?

readonly optional ssr?: boolean

Inherited from

GluonFeatures.ssr


store?

readonly optional store?: boolean

Inherited from

GluonFeatures.store


testing?

readonly optional testing?: boolean

Inherited from

GluonFeatures.testing


ui?

readonly optional ui?: boolean

Inherited from

GluonFeatures.ui

Example

Choose the target directory, package name, overwrite policy, working directory, and optional starter features:

ts
import {
  CREATE_GLUON_VERSION,
  ScaffoldError,
  helpText,
  normalizeFeatures,
  parseCliArguments,
  scaffoldProject,
  type CliPrompt,
  type GluonFeatures,
  type ParsedCliArguments,
  type ScaffoldErrorCode,
  type ScaffoldOptions,
  type ScaffoldResult,
} from 'create-gluon';

const parsed: ParsedCliArguments = parseCliArguments(['my-shop', '--ssr', '--ui', '--testing', '--yes']);
const features: GluonFeatures = normalizeFeatures(parsed);
const options = {
  directory: parsed.directory!,
  name: '@example/my-shop',
  cwd: '/tmp',
  force: true,
  ...features,
} satisfies ScaffoldOptions;
const prompt: CliPrompt = { question: async () => 'yes', close: () => undefined };
console.log(prompt, CREATE_GLUON_VERSION, helpText.split('\n')[0]);

try {
  const result: ScaffoldResult = await scaffoldProject(options);
  console.log(result.directory, result.features, result.files);
} catch (error) {
  if (error instanceof ScaffoldError) {
    const code: ScaffoldErrorCode = error.code;
    console.error(code, error.message);
  } else throw error;
}