我无法弄清楚为什么uglify不希望将concat字符串作为输入或输出......
这有效:
uglify: {
dev_uglify_js: {
files: {
'my_file.min.js': ['my_file.js']
}
}
}
例如,这不起作用:
uglify: {
dev_uglify_js: {
files: {
'my'+'_file.min.js': ['my_file.js']
}
}
}
你知道为什么吗? 输出错误是“SyntaxError:Unexpected token”。
这里真正的兴趣是将时间戳连接到文件名。 但只有2个字符串它不起作用...
感谢您的帮助!
答案 0 :(得分:1)
在JavaScript中,对象key
无法动态声明。这不是grunt
或uglify
的问题 - 这是语言约束。
myObject = { 'a' + 'b' : 'b' } // NOPE!
但是,可以通过方括号访问任何对象属性。例如:
myObject = { 'banana': 'boat' }
myObject.banana // boat
myObject['banana'] // boat!
因此,可以在使用方括号语法创建对象后添加属性。
myObject = {}
myObject[ 'a' + 'b' ] = 'b' // Yes
myObject.ab // b
在您的Gruntfile中,您必须在某个时候调用grunt.config.init
或grunt.initConfig
之类的内容。这通常是内联完成的:
grunt.initConfig({
uglify: {} // properties ...
});
但是,initConfig
只是接收一个对象。您可以在调用此函数之前定义它并根据需要对其进行操作。所以,例如:
var config = { uglify: {} };
config.uglify['such'+'dynamic'+'very'+'smarts'] = {};
grunt.initConfig(config);
类似的问题:
How do I create a dynamic key to be added to a JavaScript object variable
How do I add a property to a JavaScript object using a variable as the name?