To make your apps fit your desired purpose, Typetron offers a way to configure it through configuration files found in the config directory.
Here is an example of a configuration file:
📁 config/app.ts
import { AppConfig, DatabaseProvider } from '@Typetron/Framework'
import { RoutingProvider } from 'App/Providers/RoutingProvider'
import { AppProvider } from 'App/Providers/AppProvider'
export default new AppConfig({
port: 8000,
environment: 'development',
middleware: [],
providers: [
AppProvider,
RoutingProvider,
DatabaseProvider
],
staticAssets: [
{
url: '.*',
path: 'public'
}
]
})
If you need to get a specific configuration in one of your classes, controllers or services, you can make use of dependency injection like in the example below:
import { Controller, Get } from '@Typetron/Router'
import { Inject } from '@Typetron/Container'
import { AppConfig, DatabaseConfig } from '@Typetron/Framework'
@Controller()
export class HomeController {
@Inject()
appConfig: AppConfig
@Inject()
databaseConfig: DatabaseConfig
@Get()
async index() {
return `App runs on port ${this.appConfig.port}`
}
}
It is recommended to have different configuration for each environment the app is running on. This is usually because you may want to attach different resources to it like database or caching drivers.
To make this easy, Typetron uses the DotEnv package. You can find an example
file in your app’s root directory called .env.example
. After creating a new Typetron app, the Typetron CLI will copy
this file into the .env
file that is then consumed by the app.
In progress