Plugin Configuration
Configure plugin settings and environment variables.
Configuration Patternโ
import { ConfigModule, ConfigService } from "@nestjs/config";
@Module({
imports: [ConfigModule],
providers: [
{
provide: "MY_PLUGIN_CONFIG",
useFactory: (config: ConfigService) => ({
apiKey: config.get("MY_PLUGIN_API_KEY"),
endpoint: config.get("MY_PLUGIN_ENDPOINT", "https://api.default.com"),
enabled: config.get("MY_PLUGIN_ENABLED", "true") === "true",
}),
inject: [ConfigService],
},
MyPluginService,
],
})
export class MyPluginModule {}
Using Configurationโ
@Injectable()
export class MyPluginService {
constructor(
@Inject("MY_PLUGIN_CONFIG")
private readonly config: MyPluginConfig,
) {}
async process() {
if (!this.config.enabled) return;
const response = await fetch(this.config.endpoint, {
headers: { Authorization: `Bearer ${this.config.apiKey}` },
});
}
}
Environment Variablesโ
# Plugin-specific env vars
MY_PLUGIN_API_KEY=your-api-key
MY_PLUGIN_ENDPOINT=https://api.example.com
MY_PLUGIN_ENABLED=true
Validationโ
import { IsString, IsUrl, IsBoolean } from "class-validator";
export class MyPluginConfigDTO {
@IsString()
apiKey: string;
@IsUrl()
endpoint: string;
@IsBoolean()
enabled: boolean;
}
Related Pagesโ
- Plugin Dev Quickstart โ getting started
- Plugin Lifecycle โ lifecycle hooks
- Configuration System โ config overview