Skip to main content

Generator Context

The generator instance is availiable in methods of the generator file passed as a context parameter which gives you access to all of the following properties and methods.

Properties​

answers​

The answers to prompts. Cannot be accessing inside of prompts in the generator.

  • Type: {[k: string]: any | undefined}

data​

A merged object combining the answers and any data returned from the data method of generator

  • Type: {[k: string]: any | undefined}

pkg​

Read the contents of the package.json file from the output directory. Will return undefined if it does not exist

  • Type: {[k: string]: any | undefined}

generatorPkg​

Read the contents of the package.json file from the generator itself. Will return undefined if it does not exist

  • Type: {[k: string]: any | undefined}

gritPkg​

Read the contents of the package.json file from Grit

  • Type: {[k: string]: any}

gitUser​

The machines global git user config

  • Type: {name: string, username: string, email: string}

projectName​

The basename of the output directory

  • Type: string

templateDirPath​

The path to the generators template directory.

  • Type: string

outDir​

The absolute path to the output directory

  • Type: string

npmClient​

The users npm client

  • Type: npm | yarn

logger​

The logger instance for logging messages to the user with useful features

see the Swaglog docs to learn more about using the logger (its super simple)

spinner​

The spinner instance

Methods​

gitInit()​

Run git init in the output directory

  • Type: () => void

async gitCommit()​

Run git Commit -m '[message]' in the output directory

  • Type: (commitMessage?: string) => Promise<void>

async npmInstall()​

Installs dependencies in the output directory with preferred npm client

  • Type: InstallPackages
type InstallPackages = (opts: InstallOptions) => Promise<{ code: number }>

interface InstallOptions {
/** Install directory */
cwd: string
/** Package manager being used */
npmClient?: NPM_CLIENT
/** Package manager install CLI options */
installArgs?: string[]
/** Names of additional packages to install */
packages?: string[]
/** Run install as devDependencies */
saveDev?: boolean
registry?: string
}

async runScript()​

Runs an npm script in the output directories package.json file

  • Type: RunScript
type RunScript = (opts: RunNpmScriptOptions) => Promise<void>

interface RunNpmScriptOptions {
/** the path to the directory commands will run in*/
cwd?: string
/** name of script from package.json to run */
script: string
/** Package manager being used */
npmClient?: NPM_CLIENT
/** Argunemets to be appended to the command line */
args?: string[]
}

showProjectTips()​

Show the user a success message

  • Type: () => void

createError()​

Throw errors more elegantly with better logging of the error stack

  • Type: (message: string) => GritError

Testing Methods​

These methods are meant for use in testing environments to assert against the generators output but can also be used in the generator config if you would like.

async getOutputFiles()​

Get a list of the files in the output directory

  • Type: () => Promise<string[]>

async hasOutputFile()​

Check if a specific file exists in the output directory

  • Type: (file: string) => Promise<boolean>

async readOutputFile()​

Get the stringified content of a specific file in the output directory

  • Type: (file: string) => Promise<string>