diff --git a/packages/runtime-core/__tests__/apiApp.spec.ts b/packages/runtime-core/__tests__/apiApp.spec.ts index acc25606d7f..2a70350cf2a 100644 --- a/packages/runtime-core/__tests__/apiApp.spec.ts +++ b/packages/runtime-core/__tests__/apiApp.spec.ts @@ -242,13 +242,13 @@ describe('api: createApp', () => { test('use', () => { const PluginA: Plugin = app => app.provide('foo', 1) const PluginB: Plugin = { - install: app => app.provide('bar', 2) + install: (app, arg1, arg2) => app.provide('bar', arg1 + arg2) } const PluginC: any = undefined const app = createApp() app.use(PluginA) - app.use(PluginB) + app.use(PluginB, 1, 1) const Root = { setup() { diff --git a/packages/runtime-core/src/apiCreateApp.ts b/packages/runtime-core/src/apiCreateApp.ts index 57d77332a3f..ce0a2371550 100644 --- a/packages/runtime-core/src/apiCreateApp.ts +++ b/packages/runtime-core/src/apiCreateApp.ts @@ -10,7 +10,7 @@ import { createVNode, cloneVNode } from './vnode' export interface App { config: AppConfig - use(plugin: Plugin, options?: any): this + use(plugin: Plugin, ...options: any[]): this mixin(mixin: ComponentOptions): this component(name: string): Component | undefined component(name: string, component: Component): this @@ -50,7 +50,7 @@ export interface AppContext { reload?: () => void // HMR only } -type PluginInstallFunction = (app: App) => any +type PluginInstallFunction = (app: App, ...options: any[]) => any export type Plugin = | PluginInstallFunction @@ -97,15 +97,15 @@ export function createAppAPI( } }, - use(plugin: Plugin) { + use(plugin: Plugin, ...options: any[]) { if (installedPlugins.has(plugin)) { __DEV__ && warn(`Plugin has already been applied to target app.`) } else if (isFunction(plugin)) { installedPlugins.add(plugin) - plugin(app) + plugin(app, ...options) } else if (plugin && isFunction(plugin.install)) { installedPlugins.add(plugin) - plugin.install(app) + plugin.install(app, ...options) } else if (__DEV__) { warn( `A plugin must either be a function or an object with an "install" ` +