2016-07-14 4 views
0

У нас есть много отдельных файлов JavaScript, и, конечно же, они будут преобразованы в различные другие в Production. В настоящее время мы используем Microsoft Ajax Minifier из командной строки для этой задачи, но намеревается перейти на gulpjs.Gulp minified js throws error

Сам процесс минификация кажется будет хорошо, все выходные файлы генерируются, ошибки не записывается в выходной и т.д.

Но у меня есть странные проблемы, ~ 4-5 из 16 минимизирован файлы, созданные gulpjs бросать различные ошибки, такие как:

Cannot read property '...' of undefined

или

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

Ajax мили nifier называется следующим образом:

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

Образец из 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> 

Образец из 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)); 
}; 

В случае, если это имеет значение, вот 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" 
    } 
} 

Подводя итог:

  • Использование неминифицированных js-файлов, сайт работает нормально.
  • Использование мини-js-файлов, созданных AjaxMin.exe, сайт отлично работает.
  • Использование мини-js-файлов, созданных gulpjs, сайт разбивается.

У кого-нибудь есть предложение, что я пропустил?

UPDATE

Пример создания контроллера:

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

Вы используете Угловое может быть в ваших источниках? –

+0

@IlyaNovojilov да, угловые файлы являются прямыми ссылками на страницах, поэтому они не могут быть нивелированы ни в один из выходных файлов. – Szeki

+0

Вы минимизируете свои угловые директивы? Если так http://stackoverflow.com/questions/18782324/angularjs-minify-best-practice –

ответ

0

Примечание: Это должно быть комментарий, но это ответ, так как это немного долго, и ответ easyer в писать и читать ...

для начала, я хотел бы попробовать настройки для false как gulp-minify варианты mangle и compress.

Если код работает нормально, попробуйте установить false только один вариант, чтобы узнать, кто несет ответственность за сбой.

Если код сломался (это было бы довольно странно, так как я полагаю, что главная задача мини-преобразователя состоит в том, чтобы сжать и калечить ...), я попытался бы вручную сравнить вывод одного файла gulp-minify ed источник, чтобы узнать, какие изменения ...

+0

Я установил 'compress' и' mangle' в false, но у меня все еще есть одна проблема – Szeki

+0

Я бы попытался вручную сравнить результат одного из gulp-minifieded файл в источник, чтобы увидеть, какие изменения и от каких изменений, вернуться к корневой проблеме. – MarcoS

+0

Еще один вопрос: ваш код проходит проверку jslint? – MarcoS