2014-02-07 48 views
16

我正在維護一個廣泛使用Grunt的Web應用程序。我必須縮小,將我的html,css,js文件複製到不同時間的不同位置。所以,以方便我在GruntFile.js創建了一個簡單的JavaScript變量,如下所示:Gruntfile.js中的Javascript變量?

var path="C:/dist"; 

uglify: { 
    options: { 
     mangle: false 
    }, 
    my_target: { 
     files: { 
     path+'/js/jsFile.js': ['src/js/jquery-1.10.2.min.js'] 
     } 
    }   
} 

當我建立這個我收到以下錯誤

>> SyntaxError: Unexpected token +

我不能在我的GruntFile.js中使用路徑變量。因爲我有10個位置路徑。

回答

46

另一種方法是利用Grunt模板:

grunt.initConfig({ 
    path: 'C:/dist/', 
    uglify: { 
    options: { 
     mangle: false 
    }, 
    '<%= path %>js/jsFile.js': ['src/js/jquery-1.10.2.min.js'] 
    }   
}); 
+1

這個。這是做這件事的方式。 – Mathletics

+0

同樣地:http://chrisawren.com/posts/Advanced-Grunt-tooling#Using-variables-in-your-configuration – Hugo

+0

我一直使用'[variable +'string']:value',它突然停止工作。這個答案爲我解決了它。 –

2

JavaScript對象格式不允許變量作爲實際的密鑰:

path+'/js/jsFile.js'

這應該爲你工作:

var path = "C:/dist"; 

var files = {}; 
files[path+"/js/jsFile.js"] = ['src/js/jquery-1.10.2.min.js']; 

//... 
options: { 
    mangle: false 
}, 
my_target: { 
    files: files 
}   

您可以看到使用變量的幾個例子關鍵在於:

How To Set A JS object property name from a variable

+0

這不是JSON,它是JavaScript。 – meagar

+0

Javascript對象表示法,相同的交易。 – helion3

+1

不,不是。它不是* JSON,它甚至不想成爲JSON。這是一個JavaScript對象文字。這兩者不可互換。 – meagar