我一整天都在寻找答案,我确信这只是我的配置搞砸了。
简短版本: 我配置了咕噜声。 grunt-contrib-concat WORKS。 grunt-contrib-uglify SAYS IT WORKS但输出一个空文件。
长版: 项目结构是:
/projectRoot
->/dev
->/js
/foo.js
/bar.js
->/dist
->/js
我想把foo.js和bar.js输出到名为“app.js”的/ dist / js目录中的文件。
这是我的配置:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options:{
separator: ';'
},
dist:{
src:["js/foo.js", "js/barjs"],
dest:"../prod/js/app.js"
}
},
uglify:{
dist:{
files:{
"../prod/js/app.min.js":["js/foo.js", "js/bar.js"]
}
}
}
});
/**
* Set up tasks
* @type {string[]}
*/
var taskList = [
"grunt-contrib-concat",
"grunt-contrib-uglify"
];
for(var task in taskList){
grunt.loadNpmTasks(taskList[task]);
}
grunt.registerTask('default', ['concat']);
grunt.registerTask('dist', ['concat','uglify:dist']);
};
是的,Grunt安装在我的DEV目录中。
当我跑步时
grunt dist
我得到以下控制台输出:
Running "concat:dist" (concat) task
File ../prod/js/app.js created.
Running "uglify:dist" (uglify) task
File js/app.min.js created: 319 B → 0 B
Done, without errors.
Process finished with exit code 0
最后,它最终会创建文件/projectRoot/prod/js/app.min.js
......但它是空的。
关于我做错的任何想法?这个语法完全遵循自述文件和我能找到的任何其他文档中的内容。 concat任务工作得很好。
任何帮助将不胜感激。 谢谢!
- EDIT-- 我更新了Grunt,使它存在于projectRoot中,但输出没有区别。
==============
我找到了输出空文件的原因。显然,自我调用的匿名函数被“缩小”了,或者至少在这种情况下它们是。这可能是因为这里没有活动代码。我将进一步研究这个问题。我认为实际做事的函数,引用全局变量等都将保留。
==============
问题已解决。即使有缩小所有代码的选项,它仍然会删除任何未引用的变量等。我的测试文件中的东西未被使用。如果我添加对所述函数的引用,则它们会显示出来。
希望这有助于某人。
答案 0 :(得分:4)
问题已解决。即使有缩小所有代码的选项,它仍然会删除任何未引用的变量等。我的测试文件中的东西未被使用。如果我添加对所述函数的引用,那么它们就会显示出来。由于没有引用任何函数,因此它们被删除,我最终得到一个空文件。
希望这有助于某人。