2016-07-14 20 views
0

Wir haben viele separate JavaScript-Dateien, und natürlich sind sie in verschiedenen anderen in Produktion minimiert. Derzeit verwenden wir Microsoft Ajax Minifier von der Befehlszeile für diese Aufgabe, aber die Absicht ist, zu gulpjs zu wechseln.Gulp minified js wirft Fehler

Der Verkleinerungsprozess selbst in Ordnung zu sein scheint, sind alle Ausgabedateien erzeugt werden, wird kein Fehler Ausgabe geschrieben, usw.

Aber ich habe eine seltsame Frage, ~ 4-5 von 16 minimierte verschiedene Fehler erzeugten Dateien von gulpjs werfen, wie zum Beispiel:

Cannot read property '...' of undefined

oder

Uncaught TypeError: (intermediate value)(intermediate value)(...) is not a function

Ajax mi nifier wird wie folgt aufgerufen:

AjaxMin.exe -js -xml .\minify.xml -clobber -evals:safeall 

eine Probe aus dem minify.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <root> 
     <output path="..\js\min\main.min.js"> 
     <input path="..\js\filename1.js"/> 
     <input path="..\js\filename2.js"/> 
     <input path="..\js\filename3.js"/> 
     ... 
     </output> 
     <output path="..\js\min\report.min.js"> 
     <input path="..\js\filename4.js"/> 
     <input path="..\js\filename5.js"/> 
     <input path="..\js\filename6.js"/> 
     ... 
     </output> 
     ... 
    </root> 

Eine Probe von gulpfile.js

gulp.task("[js]minify-all", function() { 
    var mainFiles = [ 
     "./js/filename1.js", 
     "./js/filename2.js", 
     "./js/filename3.js", 
    ]; 
    var reportFiles = [ 
     "./js/filename4.js", 
     "./js/filename5.js", 
     "./js/filename6.js", 
    ]; 
    ... 
    generateMinifiedFile(mainFiles, "./js/min/", "main"); 
    generateMinifiedFile(reportFiles, "./js/min/", "report"); 
    ... 
} 

var generateMinifiedFile = function(inputFiles, outputPath, outputFileName) { 
    gulp.src(inputFiles) 
     .pipe(concat(outputFileName + ".js")) 
     .pipe(minify({ 
      ext: { 
       min: ".min.js" 
      }, 
      noSource: true 
     })) 
     .pipe(gulp.dest(outputPath)); 
}; 

Falls es darauf ankommt, ist hier package.json

{ 
    "name": "package", 
    "version": "1.0.0", 
    "private": true, 
    "devDependencies": { 
    "gulp": "3.9.1", 
    "gulp-bower": "0.0.13", 
    "gulp-concat": "^2.6.0", 
    "gulp-config": "0.3.0", 
    "gulp-less": "3.0.5", 
    "gulp-minify": "0.0.12", 
    "gulp-minify-css": "1.2.4", 
    "gulp-plumber": "1.1.0", 
    "gulp-watch": "4.3.5" 
    } 
} 

Um es zusammenzufassen:

  • Mit nicht-minified js-Dateien funktioniert die Website gut.
  • Mit minimierten js-Dateien erstellt von AjaxMin.exe funktioniert die Website einwandfrei.
  • Mit minimierten js-Dateien erstellt von gulpjs bricht die Website.

Jeder hat einen Vorschlag, was ich vermisse?

UPDATE

Beispiel für die Erstellung eines Controllers:

var settingsModule = angular.module("settingsModule", ["rootModule"]); 
settingsModule.controller('settingsCasesController', ["$rootScope", "$scope", "$http", "DataService", function ($rootScope, $scope, $http, dataService) { 
    ... 
} 
+0

Verwenden Sie Angular möglicherweise in Ihren Quellen? –

+0

@IlyaNovojilov ja, eckige Dateien sind direkte Verweise auf den Seiten, so dass sie in keine der Ausgabedateien minimiert werden – Szeki

+0

Verkleinern Sie Ihre eckigen Anweisungen? Wenn ja http://stackoverflow.com/questions/18782324/angularjs-minify-best-practice –

Antwort

0

Hinweis: Dies sollte ein Kommentar sein, aber es ist eine Antwort, da es ein bisschen zu lang ist, und eine Antwort ist easyer zu schreiben und zu lesen ...

zu beginnen, ich würde versuchen, zu false beiden gulp-minify Optionen Einstellung mangle und compress.

Wenn der Code in Ordnung ist, sollten Sie versuchen, false nur eine Option, um zu sehen, welche für den Fehler verantwortlich ist.

Wenn Code bricht (das wäre ziemlich seltsam, da ich die Hauptaufgabe eines Minifier ist zu komprimieren und zu mangeln ...), würde ich versuchen, die Ausgabe einer gulp-minify Ed-Datei manuell zu vergleichen Quelle, um zu sehen, was die Änderungen sind ...

+0

Ich setze 'compress' und' mangle' auf false, aber ich habe immer noch das gleiche Problem – Szeki

+0

Ich würde versuchen, die Ausgabe von einem gulp-minifyed manuell zu vergleichen Datei an die Quelle, um zu sehen, was die Änderungen sind, und von diesen Änderungen zurück zum Wurzelproblem. – MarcoS

+0

Eine weitere Frage: übergibt Ihr Code einen Jslint-Check? – MarcoS