@platformatic/generators
v2.15.0
Published
Main classes and utils for generators.
Downloads
455,588
Keywords
Readme
Platformatic Generator
Generates a Platformatic app programmatically.
Extending default class
The base class BaseGenerator
is basically a file writer with some default behaviours.
It should be instantiated with an options
object having this properties
type
:"db" | "service" | "composer"
logger
: A pino-like logger object. If not provided a fake logger with no output will be usedquestions
: An array of custom questions object to provide toinquirer
. Default to[]
The setConfig({...})
function should be called to set the config generator. BaseGenerator
supports the bare minumium set of options which are common to all types of apps
targetDirectory
Where in the local filesystem the app will be createdport
: The port where the app should listenhostname
: The hostname where the app should listenplugin
: Whether to create or not a sample plugin file structuretypescript
:true|false
initGitRepository
: Inits the git repositorydependencies
: A key value object to add dependencies inpackage.json
filedevDependencies
: A key value object to add dev-dependencies inpackage.json
fileenv
: A key/value object that will be automatically appended to the generated.env
file
Usage
This is the simplest example to create a Platformatic Service app into /path/to/app
const { BaseGenerator } = require('@platformatic/generators')
async function main() {
const gen = new BaseGenerator({
type: 'service'
})
gen.setConfig({
targetDirectory: '/path/to/app'
})
await gen.run()
}
main()
The run()
function will call the prepare()
function which prepare all files in memory, which will be written by the writeFiles()
function.
Hooks
In order to customize the behavior of a subclass there are some functions that may be implemented
_getConfigFileContents
Returns an object that will be serialized with JSON.stringify
method. It will be saved in the platformatic.${TYPE}.json
file
_beforePrepare
Called from prepare
function. You have already access to the current fastify
version (this.fastifyVersion
) and platformatic
version (this.platformaticVersion
)
_afterPrepare
Called at the end of prepare
function body