# runtimePlugins
- 类型:`string[] | Array<[string, Record<string, unknown>]>`
- 是否必填:否
- 默认值:`undefined`
用于添加运行时需要的额外插件。值可以是:
- 表示具体插件路径的字符串(支持绝对/相对路径、包名)
- 一个数组,其中每个元素可以是字符串或元组 \[字符串路径, 对象配置]
通过「[插件系统](/zh/plugin/dev/index.md)」了解更多关于如何开发 runtimePlugin 细节。
设置后,运行时插件会自动在构建时注入并使用。
- 示例
**基础用法:**
创建运行时插件文件: `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;
},
};
}
```
在构建配置应用此插件:
```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')],
}),
],
};
```
**带参数用法:**
你还可以通过使用元组格式为运行时插件提供配置选项:
```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'
}
]
],
}),
],
};
```
插件可以访问这些配置选项:
```ts title="another-plugin.ts"
import { ModuleFederationRuntimePlugin } from '@module-federation/enhanced/runtime';
export default function (options: any): ModuleFederationRuntimePlugin {
console.log('插件配置:', options);
return {
name: 'another-plugin',
beforeInit(args) {
if (options.debug) {
console.log('[调试] beforeInit: ', args);
}
return args;
},
};
}
```