我们有很多单独的JavaScript文件,当然它们在生产中被缩小为其他各种文件。目前我们从命令行使用Microsoft Ajax Minifier来完成此任务,但目的是切换到gulpjs。
缩小过程本身似乎还可以,生成所有输出文件,没有错误写入输出等。
但是我有一个奇怪的问题,gulpjs
生成的 4 个缩小文件中的 ~5-5 个会抛出各种错误,例如:
无法读取属性"..."未定义
或
未捕获的类型错误:(中间值)(中间值)(...)不是函数
Ajax minifier 的调用方式如下:
AjaxMin.exe -js -xml .minify.xml -clobber -evals:safeall
来自minify.xml
的样本:
<?xml version="1.0" encoding="utf-8"?>
<root>
<output path="..jsminmain.min.js">
<input path="..jsfilename1.js"/>
<input path="..jsfilename2.js"/>
<input path="..jsfilename3.js"/>
...
</output>
<output path="..jsminreport.min.js">
<input path="..jsfilename4.js"/>
<input path="..jsfilename5.js"/>
<input path="..jsfilename6.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文件,该网站工作正常。
- 使用
AjaxMin.exe
创建的缩小的js文件,该网站工作正常。 - 使用由
gulpjs
创建的缩小的js文件,网站中断。
有人建议我错过什么吗?
更新
创建控制器的示例:
var settingsModule = angular.module("settingsModule", ["rootModule"]);
settingsModule.controller('settingsCasesController', ["$rootScope", "$scope", "$http", "DataService", function ($rootScope, $scope, $http, dataService) {
...
}
注意:这应该是一个评论,但这是一个答案,因为它有点长,而且答案更容易写和阅读......
首先,我会尝试设置以false
gulp-minify
选项mangle
和compress
。
如果代码运行正常,则应尝试设置为仅false
一个选项,以查看哪个选项导致失败。
如果代码中断(这会很奇怪,因为我想缩小器的主要任务是压缩和破坏......),我会尝试手动将一个 gulp-minify
ed 文件的输出与源代码进行比较,看看有什么变化......