2014-02-07 23 views
16

Ich führe eine Webanwendung, die Grunt ausgiebig verwendet. Ich muss meine HTML-, CSS-, JS-Dateien zu verschiedenen Zeitpunkten zu verschiedenen Zeitpunkten verkleinern. So machen es einfach, ich eine einfache JavaScript-Variable in meinem GruntFile.js wie folgt erstellt:JavaScript-Variablen in Gruntfile.js?

var path="C:/dist"; 

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

Als ich das Gebäude bin ich bin den folgenden Fehler bekommen

>> SyntaxError: Unexpected token +

kann ich nicht Verwenden Sie Pfadvariable in meiner GruntFile.js. Weil ich 10 Standortpfade habe.

path+'/js/jsFile.js'

Dies sollte für Sie arbeiten:

Antwort

46

Eine weitere Möglichkeit ist Grunt Vorlagen zu verwenden:

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

Dies. Dies ist der Grund, es zu tun. – Mathletics

+0

Ähnlich: http://chrisawren.com/posts/Advanced-Grunt-tooling#Using-variables-in-your-configuration – Hugo

+0

Ich habe immer '[variable + 'string']: value' verwendet, die plötzlich nicht mehr funktioniert . Diese Antwort behebt es für mich. –

2

Das JavaScript-Objekt-Format eine Variable als eigentliche Schlüssel nicht zulässt, dass

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 
}   

Sie einige Beispiel Verwendung von Variablen sehen können, wie der Schlüssel hier:

How To Set A JS object property name from a variable

+0

Das ist nicht JSON, es ist JavaScript. – meagar

+0

Javascript Objektnotation, gleiches Angebot. – helion3

+1

Nein, ist es nicht. Es ist * nicht * JSON, es versucht nicht einmal JSON zu sein. Es ist ein JavaScript-Objektliteral. Die zwei sind nicht austauschbar. – meagar

Verwandte Themen