Configuration
The configuration is done via decorators or/and during the bootstrap of your application.
You can configure your server with the @Configuration
decorator or by using the new configuration()
function, depending on your needs or preference.
Here are all examples to configure your application:
import {Configuration} from "@tsed/di";
import {MyController} from "./controllers/manual/MyController";
@Configuration({
mount: {
"/rest": [
`./controllers/current/**/*.ts`, // deprecated
MyController // support manual import
],
"/rest/v0": [
// versioning
`./controllers/v0/users/*.js`, // deprecated
`!./controllers/v0/groups/old/*.ts` // Exclusion
]
}
})
export class Server {}
import {configuration, injectable} from "@tsed/di";
configuration({
mount: {
"/rest": [
`./controllers/current/**/*.ts`, // deprecated
MyController // support manual import
],
"/rest/v0": [
// versioning
`./controllers/v0/users/*.js`, // deprecated
`!./controllers/v0/groups/old/*.ts` // Exclusion
]
}
});
import {$log} from "@tsed/logger";
import {PlatformExpress} from "@tsed/platform-express";
import {Server} from "./Server.js";
async function bootstrap() {
try {
$log.debug("Start server...");
const platform = await PlatformExpress.bootstrap(Server, {
// extra settings
});
await platform.listen();
$log.debug("Server initialized");
} catch (er) {
$log.error(er);
}
}
bootstrap();
Note
Configuration set during the .bootstrap()
method will be the default configuration for the application. Configuration set in the @Configuration
decorator will be merged with the default configuration.
Note 2
Ts.ED supports ts-node. Ts extension will be replaced by a Js extension if ts-node isn't the runtime.
Configuration Sources
Since Ts.ED v8.9.0, you can use @tsed/config
to load configuration from different sources (files, environment variables, redis, etc.).
See the Configuration Sources page for more information.
Legacy
For Ts.ED under v8.9.0, read the following Load configuration from file page.
Server options
See all available options in the ServerOptions page.
Specific Platform options
See specific platform options for:
Get configuration
The configuration can be reused throughout your application in different ways.
- With dependency injection in Controller, Middleware , Pipe or any Injectable services.
- With the decorators Constant and Value.
From service
import {Configuration, Injectable} from "@tsed/di";
@Injectable()
export class MyService {
constructor(@Configuration() configuration: Configuration) {}
}
import {configuration, injectable} from "@tsed/di";
export class MyService {
constructor() {
const settings = configuration();
}
}
injectable(MyService);
From decorators
Decorators Constant and Value can be used in all classes including:
Constant and Value accepts an expression as parameters to inspect the configuration object and return the value.
import {Env} from "@tsed/core";
import {Constant, Value, Injectable} from "@tsed/di";
@Injectable()
export class MyService {
@Constant("env")
env: Env;
@Value("swagger.path")
swaggerPath: string;
$onInit() {
console.log(this.env);
}
}
import {constant, refValue, injectable} from "@tsed/di";
import {Env} from "@tsed/core";
export class MyClass {
env = constant<Env>("env");
swaggerPath = refValue<string>("swagger.path");
$onInit() {
console.log(this.env);
}
}
injectable(MyClass);
WARNING
Constant returns an Object.freeze() value.