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.
Once set, runtime plugins will be automatically injected and used during the build process.
Basic usage:
To create a runtime plugin file, you can name it custom-runtime-plugin.ts
:
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:
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:
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:
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;
},
};
}