fix(runtime-core): pass options to plugins (#561)

This commit is contained in:
宋铄运
2019-12-24 23:33:47 +08:00
committed by Evan You
parent 6a14542f78
commit 4d20981eb0
2 changed files with 7 additions and 7 deletions

View File

@@ -10,7 +10,7 @@ import { createVNode, cloneVNode } from './vnode'
export interface App<HostElement = any> {
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<HostNode, HostElement>(
}
},
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" ` +