In einem eckigen Projekt, das mit Yeoman
gestartet wurde, haben wir json-Dateien (dev, test, dist ...) mit den Konstanten, die für jede Umgebung benötigt werden, damit die Grunt-Serve-Aufgabe definiert wird wie:Grunt ngconstant: Generierung aus mehreren austauschbaren Dateien
grunt.registerTask('serve', function(environment) {
grunt.task.run([
...
'ngconstant:'+environment,
...
]);
});
und dann in ngconstant haben wir:
ngconstant: {
options: {
name: 'environment',
dest: ...
},
dev: {
constants: {
'ENV': grunt.file.readJSON('environments/dev.json')
}
},
test: {
constants: {
'ENV': grunt.file.readJSON('environments/test.json')
}
},
...
}
}
, so dass es mit grunt serve:dev
ausgeführt werden kann, grunt serve:test
...
Jetzt müssen wir auch bestimmte Aspekte der Anwendung ändern, auf einem zweiten Kriterien abhängig (seien wir Anwenderziel nennen), in einer Weise, dass es wie grunt serve:dev:target1
gebaut werden konnte, grunt serve:test:target2
...
Kann dies mit ngconstant erfolgen ? Die einzige ähnliche Idee, die ich bisher hatte, war Ziele wie dev-target1
, dev-target2
, test-target1
zu definieren ... wo jeder ENV
zu einer Datei und TARGET
zum anderen, aber das ist nicht skalierbar (wir arbeiten mit nur zwei Zielen, aber wir erwarten mehr kommt bald) und einfach nur hässlich.