2016-08-22 2 views
2

Ich habe mehrere verschiedene eckige Module, die ich so verketten möchte, dass jedes Modul eine andere einzelne Ausgabedatei hat.Dynamisch Laden mehrerer Eingangspunkte und Teilen der Ausgabe

so, dass, wenn in der Ressourcen/assets/js/Winkel/modules haben I:

Role 
    - controllers 
     roleIndexController 
    - app.js 

Descriptions 
    -controllers 
     descriptionIndexController 
    -app.js 

Und ich will dies bis Ende ist zwei Dateien:

RoleModule.js 
DescriptionsModule.js 

Und ich don Ich möchte jedes Modul nicht jedes Mal zur Schluckdatei hinzufügen, wenn ich ein neues hinzufüge.

Ich habe versucht, glob Zeichen Zugabe Elixier mit webpack in Laravel:

require('laravel-elixir-webpack'); 

elixir(function (mix) {  
    mix.webpack(
     ['angular/app.js', '.angular/modules/**/app.js'], 
     { 
      output : { 
       filename : './angular/app.js' 
     } 
}) 

und auch nur gulp-webpack und glob_entries mit:

gulp.task('compileAngularScripts', function(){ 
    return gulp.src('angular/app.js') 
     .pipe(webpack({ 
      entry : glob_entries('./resources/assets/js/angular/modules/**/app.js'), 
      output : { 
       filename : 'app.js' 
      } 
     })) 
     .pipe(gulp.dest('test/')); 
}); 

ich nicht einmal scheinen die glob Wildcard zu bekommen Zeichen, um zu arbeiten, um Dateien dynamisch zu verketten, viel weniger bricht jedes Modul in seine eigene Akte.

Gibt es eine Möglichkeit, dies mit Schluck zu tun?

Antwort

2

ich erreicht dies durch die glob npm Paket mit webpack

var glob      = require('glob'); 
var webpack     = require('gulp-webpack'); 

elixir(function (mix) { 
    .task('compileScripts') 


gulp.task('compileScripts', function() { 

return gulp.src('angular/app.js') 
    .pipe(webpack({ 
     entry : entries(), 
     output : { 
      filename : "[name]Module.js" 
     } 
    })) 
    .pipe(gulp.dest('public/js/angular/modules')); 
}); 

function entries() { 
    var entries = {}; 
    glob.sync('./modules/**/Resources/assets/angular/app.js').forEach(function (url) { 
     var moduleNmae  = url.split("/")[2]; 
     entries[moduleNmae] = url; 
    }); 

    return entries; 
} 
mit
Verwandte Themen