@@ -74,9 +74,10 @@ class LesyLoader {
7474 loadPlugins ( paths : Plugin [ ] ) : void {
7575 paths . forEach ( ( pluginSource : any ) => {
7676 if ( Array . isArray ( pluginSource ) ) {
77- this . pluginConfigs [ pluginSource [ 0 ] ] = pluginSource [ 1 ] || { } ;
77+ const [ pluginPath , pluginConfig = { } ] = pluginSource ;
78+ this . pluginConfigs [ pluginPath ] = this . loadPluginsPlugins ( pluginConfig ) ;
7879 // tslint:disable-next-line: no-parameter-reassignment
79- pluginSource = pluginSource [ 0 ] ;
80+ pluginSource = pluginPath ;
8081 }
8182 try {
8283 const isObject = typeof pluginSource === "object" ;
@@ -172,6 +173,41 @@ class LesyLoader {
172173 const isDir = lstatSync ( fileOrDir ) . isDirectory ( ) ;
173174 if ( isDir ) return this . loadFromDir ( fileOrDir , name ) ;
174175 }
176+
177+ private loadPluginsPlugins ( pluginConfig = { } ) {
178+ const pluginsPlugins = pluginConfig [ "plugins" ] ;
179+ if ( ! pluginsPlugins || ! Array . isArray ( pluginsPlugins ) ) return pluginConfig ;
180+ const pluginsPluginsData = [ ] ;
181+ pluginsPlugins . forEach ( ( pluginSource : string ) => {
182+ try {
183+ const isFile = lstatSync ( pluginSource ) . isFile ( ) ;
184+ if ( isFile ) {
185+ pluginsPluginsData . push ( {
186+ src : pluginSource ,
187+ module : this . getModuleFromFile ( pluginSource ) ,
188+ } ) ;
189+ return ;
190+ }
191+ } catch ( e ) { }
192+
193+ try {
194+ const paths = [ this . root ] ;
195+ pluginsPluginsData . push ( {
196+ src : pluginSource ,
197+ module : this . getModuleFromFile (
198+ require . resolve ( pluginSource , { paths } ) ,
199+ ) ,
200+ } ) ;
201+ } catch ( e ) {
202+ console . log ( `${ pluginSource } is not loaded` ) ;
203+ console . log ( `Error: ${ e . message } ` ) ;
204+ }
205+ } ) ;
206+ return {
207+ ...pluginConfig ,
208+ plugins : pluginsPluginsData ,
209+ } ;
210+ }
175211}
176212
177213export { LesyLoader } ;
0 commit comments