Modern.js 的插件配置对象提供了一系列的字段,用于控制插件顺序、互斥等能力,可用的字段如下:
name
: string
,设置当前插件的名称。pre
: string[]
,这些插件最终会调整到当前插件前面。post
: string[]
,这些插件最终会调整到当前插件后面。rivals
: string[]
,互斥插件,遇到这些插件时会报错。required
: string[]
,必需插件,插件列表中没有对应的插件时会报错。usePlugin
: CliPlugin[]
,注册其他插件。通过以上参数可以实现插件的前置、后置、互斥、必需等逻辑。
Modern.js 的插件通过 pre
、post
参数来实现了插件排序的功能。
默认情况下,插件会按照添加顺序依次执行,通过 pre
字段可以声明前置执行的插件。
比如有下面两个插件:
bar
插件在 pre
字段中配置了 foo
插件,因此 foo
插件一定会在 bar
插件之前执行。
同样的,通过 post
字段可以声明后置执行的插件。
bar
插件在 post
字段中配置了 foo
插件,因此 foo
插件一定会在 bar
插件之后执行。
通过 rivals
字段可以声明插件间的互斥关系。
有下面两个插件:
bar
插件在 rivals
字段中配置了 foo
插件,因此同时添加了 foo
插件和 bar
插件就会报错。
通过 required
字段可以声明插件间的依赖关系。
有下面两个插件:
bar
插件在 required
字段中配置了 foo
插件,因此使用 bar
插件时,如果未配置 foo
插件就会报错。
当插件之间存在依赖关系时,我们也可以在一个插件中通过 usePlugin
主动注册另一个插件:
当使用者配置了 bar
插件时,foo
插件也会自动注册生效,使用者就不需要去额外注册 foo
插件了。