У нас есть много отдельных файлов 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) {
...
}
Вы используете Угловое может быть в ваших источниках? –
@IlyaNovojilov да, угловые файлы являются прямыми ссылками на страницах, поэтому они не могут быть нивелированы ни в один из выходных файлов. – Szeki
Вы минимизируете свои угловые директивы? Если так http://stackoverflow.com/questions/18782324/angularjs-minify-best-practice –