- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
4.3.3. Module Options
In this chapter, you’ll learn about passing options to your module from the Medusa application’s configurations and using them in the module’s resources.
What are Module Options?#
A module can receive options to customize or configure its functionality.
For example, if you’re creating a module that integrates a third-party service, you’ll want to receive the integration credentials in the options rather than adding them directly in your code.
How to Pass Options to a Module?#
To pass options to a module, add an options
property to the module’s configuration in medusa-config.ts
.
For example:
The options
property’s value is an object. You can pass any properties you want.
Access Module Options in Main Service#
The module’s main service receives the module options as a second parameter.
For example:
1import { MedusaService } from "@medusajs/framework/utils"2import MyCustom from "./models/my-custom"3 4// recommended to define type in another file5type ModuleOptions = {6 capitalize?: boolean7}8 9export default class HelloModuleService extends MedusaService({10 MyCustom,11}){12 protected options_: ModuleOptions13 14 constructor({}, options?: ModuleOptions) {15 super(...arguments)16 17 this.options_ = options || {18 capitalize: false,19 }20 }21 22 // ...23}
Access Module Options in Loader#
The object that a module’s loaders receive as a parameter has an options
property holding the module's options.
For example:
1import {2 LoaderOptions,3} from "@medusajs/framework/types"4 5// recommended to define type in another file6type ModuleOptions = {7 capitalize?: boolean8}9 10export default async function helloWorldLoader({11 options,12}: LoaderOptions<ModuleOptions>) {13 14 console.log(15 "[HELLO MODULE] Just started the Medusa application!",16 options17 )18}