2016-05-02 29 views
0

Ich bin Setup versucht, einen Build-Workflow die oben genannten Technologien, aber ich bin den folgenden Fehler erhalten, die bei dem Ausführen von Tests auf Karma sehr allgemein scheint:Setup-Babel + uglify + Karma mit Grunt

TypeError: 'undefined' is not an object (evaluating 'a.Sifter=b()') 

Dies geschieht auch ohne Hinzufügen einer spezifischen ECMSA6-Funktion. Derselbe Workflow funktioniert ohne die Transpiling-Phase im Workflow.

Was war ich versucht, die babeljs nach einer Verkettung Phase zu setzen und vor einer uglifying darauf, wie der folgende Ausschnitt Ausführung:

var defaultTasks = [ 
     "sass:prod", // compile scss sources 
     "cleanAll", // clean folders: preparing for copy 
     "copyAll", // copying bower files 
     "cssmin:customVendor", // minify and concat 'customized from vendor' css 
     "concat:vendorStyles", // concat vendors's css + minified 'customized from vendor' and distribute as 'css/vendor.css' 
     "uglify:rawVendors", // minifies unminified vendors 
     "concat:vendorScripts", // concat vendors's scripts and distribute as 'scripts/vendor.js' 
     "ngAnnotate:app", // ng-annotates app's scripts 
     "concat:appScripts", // concat app's (customized from vendor's + ng-annotated + customer's) 
     "babel",// uses babeljs to convert brandnew ES6 javascript into ES5 allowing for old browsers 
     "uglify:app" // minify app script and distribute as 'scripts/app.js' 
    ]; 
    if (!skipTest) { 
     defaultTasks.push("karma:target"); // run tests on minified scripts 
    } 

Die imporant Definitionen dargestellt:

babel: { 
      options: { 
       "presets": ['es2015'] 
      }, 
      dist: { 
       files: { 
        "<%= concat.appScripts.dest %>": "<%= concat.appScripts.dest %>" 
       } 
      } 
     }, 

     uglify: { 
      options: { 
       mangle: { 
        except: [ 
         "jQuery", "angular", "tableau", "LZString", "moment", "Moment", "Modernizr", 
         "app", "modules" 
        ] 
       } 
      }, 
      app: { 
       files: [{ 
        src: ["<%= concat.appScripts.dest %>"], 
        dest: "<%= app.dist %>/scripts/app.js" 
       }] 
      } 
     }, 

I Habe das transpile ein wenig getestet und die Standardlogik von babel url ausgeführt, und es funktioniert gut, wenn man grundlegende Dinge konvertiert.

Gibt es einen besseren Workflow, den ich verwenden könnte, um die Tests immer noch mit demselben Code auszuführen, der für echte ausgeführt wird?

Dank

+0

Gefunden, dass der erwähnte Fehler bezieht sich auf Selectize.js, aber ich weiß immer noch nicht, wie es mit dem Build verwandt ist. Die selectize ist jedoch in der verketteten Datei enthalten. Wird weiter graben –

Antwort

0

Am Ende war der Workflow korrekt.

Ich muss nur die Dateigruppen ein wenig ändern, um zu vermeiden, die Datei selectize.js zu transpilieren (was nicht wirklich benötigt wurde).

jedoch nicht sicher, warum es wurde

zu brechen, die mir gelöst, so bin ich auf die Frage zu schließen, aber vielleicht könnte für jemand anderen nützlich sein.