# runtimePlugins
- Type: `string[] | Array<[string, Record<string, unknown>]>`
- Required: No
- Default: `undefined`
The `runtimePlugins` configuration is used to add additional plugins needed at runtime. The value can be:
- A string representing the path to the specific plugin (absolute/relative path or package name)
- An array where each element can be either a string or a tuple with \[string path, object options]
You can learn more about how to develop `runtimePlugin` details by visiting the [Plugin System](/plugin/dev/index.md).
Once set, runtime plugins will be automatically injected and used during the build process.
- Examples
**Basic usage:**
To create a runtime plugin file, you can name it `custom-runtime-plugin.ts`:
```ts title="custom-runtime-plugin.ts"
import { ModuleFederationRuntimePlugin } from '@module-federation/enhanced/runtime';
export default function (): ModuleFederationRuntimePlugin {
return {
name: 'custom-plugin-build',
beforeInit(args) {
console.log('[build time inject] beforeInit: ', args);
return args;
},
beforeLoadShare(args) {
console.log('[build time inject] beforeLoadShare: ', args);
return args;
},
};
}
```
Then, apply this plugin in your build configuration:
```ts title="rspack.config.ts"
const path = require('path');
module.exports = {
plugins: [
new ModuleFederationPlugin({
name: 'host',
remotes: {
'manifest-provider':
'manifest_provider@http://localhost:3011/mf-manifest.json',
},
runtimePlugins: [path.resolve(__dirname, './custom-runtime-plugin.ts')],
}),
],
};
```
**With options:**
You can also provide options to runtime plugins by using a tuple format:
```ts title="rspack.config.ts"
const path = require('path');
module.exports = {
plugins: [
new ModuleFederationPlugin({
name: 'host',
remotes: {
'manifest-provider':
'manifest_provider@http://localhost:3011/mf-manifest.json',
},
runtimePlugins: [
path.resolve(__dirname, './custom-runtime-plugin.ts'),
[
path.resolve(__dirname, './another-plugin.ts'),
{
debug: true,
timeout: 5000,
customConfig: 'value'
}
]
],
}),
],
};
```
The plugin can then access these options:
```ts title="another-plugin.ts"
import { ModuleFederationRuntimePlugin } from '@module-federation/enhanced/runtime';
export default function (options: any): ModuleFederationRuntimePlugin {
console.log('Plugin options:', options);
return {
name: 'another-plugin',
beforeInit(args) {
if (options.debug) {
console.log('[debug] beforeInit: ', args);
}
return args;
},
};
}
```