Generates a Platformatic app programmatically.
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 used -
questions
: 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 created -
port
: The port where the app should listen -
hostname
: The hostname where the app should listen -
plugin
: Whether to create or not a sample plugin file structure -
typescript
:true|false
-
initGitRepository
: Inits the git repository -
dependencies
: A key value object to add dependencies inpackage.json
file -
devDependencies
: A key value object to add dev-dependencies inpackage.json
file -
env
: A key/value object that will be automatically appended to the generated.env
file
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.
In order to customize the behavior of a subclass there are some functions that may be implemented
Returns an object that will be serialized with JSON.stringify
method. It will be saved in the platformatic.${TYPE}.json
file
Called from prepare
function. You have already access to the current fastify
version (this.fastifyVersion
) and platformatic
version (this.platformaticVersion
)
Called at the end of prepare
function body