5
5
* @since 0.1.0
6
6
*/
7
7
8
- import ConfigManager from './config-manager' ;
8
+ import ConfigManager , { IConfigManager } from './config-manager' ;
9
+ import ConfigManagerProxy from './config-manager/config-manager-proxy' ;
9
10
import ConfigWizard from './config-wizard' ;
10
- import PluginManager from './plugin-manager' ;
11
+ import PluginManager , { PluginManager as IPluginManager } from './plugin-manager' ;
11
12
import TaskManager from './task-manager' ;
12
13
import taskInitProject from './tasks/task-init-project' ;
13
14
import Logger , { ILogger } from './util/logger' ;
@@ -23,19 +24,25 @@ const taskManagerConfig = {
23
24
] ,
24
25
} ;
25
26
26
- let plugins = [
27
+ let internalPlugins = [
27
28
taskInitProject ,
28
- 'stylus' ,
29
29
] ;
30
30
31
31
/* test:start */
32
- // Remove external plugins when testing
33
- plugins = [
34
- taskInitProject ,
35
- ] ;
32
+ // Stop internal plugin loading in TEST environment
33
+ internalPlugins = [ ] ;
36
34
/* test:end */
37
35
38
36
37
+ /**
38
+ * Get list of plugins from init config and register them
39
+ */
40
+ export async function loadConfigPlugins ( configManager : IConfigManager , pluginManager : IPluginManager ) {
41
+ const config = ConfigManagerProxy ( configManager , 'init' ) ;
42
+ await pluginManager . use ( ...await config . get ( 'plugins' ) ) ;
43
+ }
44
+
45
+
39
46
/**
40
47
* Main Frontvue constructor
41
48
*/
@@ -48,8 +55,16 @@ async function Frontvue() {
48
55
const pluginManager = PluginManager ( taskManager , configWizard ) ;
49
56
const { run } = taskManager ;
50
57
51
- // Use custom plugin(s)
52
- await pluginManager . use ( ...plugins ) ;
58
+ // Use internal plugin(s)
59
+ await pluginManager . use ( ...internalPlugins ) ;
60
+
61
+ // Load external plugins from configuration
62
+ let loadExternalPlugins = loadConfigPlugins ;
63
+ /* test:start */
64
+ // Stop external plugin loading in TEST environment by replacing the load function
65
+ loadExternalPlugins = async ( ) => undefined ;
66
+ /* test:end */
67
+ await loadExternalPlugins ( configManager , pluginManager ) ;
53
68
54
69
// Return public API
55
70
return Object . freeze ( {
0 commit comments