Main classes and utils for generators.
npm install @platformatic/generatorsGenerates 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" | "gateway"
- 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 to inquirer. 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 in package.json file
- devDependencies: A key value object to add dev-dependencies in package.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
``js
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
#### _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