1

我不明白为什么 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个字符串它不起作用所以......

谢谢你的帮助 !

4

1 回答 1

1

在 JavaScript 中,key不能动态声明对象。这不是gruntor的问题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 示例

在你的 Gruntfile 中,你一定会在某些时候调用类似grunt.config.initor的东西grunt.initConfig。这通常是内联完成的:

grunt.initConfig({
  uglify: {} // properties ...
});

但是,initConfig只是接收一个对象。在调用此函数之前,您可以根据需要对其进行定义和操作。因此,例如:

var config = { uglify: {} };
config.uglify['such'+'dynamic'+'very'+'smarts'] = {};
grunt.initConfig(config);

类似的问题:

如何创建要添加到 JavaScript 对象变量的动态键

如何使用变量作为名称将属性添加到 JavaScript 对象?

于 2015-02-20T10:54:29.340 回答