Ich habe ein funktionierendes requirjs-Projekt, das grunt für die Erstellung und Bereitstellung verwendet. Wenn überhaupt keine Optimierung verwendet wird, funktioniert der Build ohne Probleme und ich bekomme eine große js-Datei, um sie bei der Produktion zu implementieren.Wie bestimmte requireJS-Dateien von der Vereinheitlichung/Optimierung ausgeschlossen werden können
Das Problem, das ich habe, ist, dass ich einige externe Frameworks (wie angularJS) habe, wo ich bereits eine minimierte/optimierte Version davon habe und nicht noch einmal optimieren möchte.
Momentan ohne Optimierung füge ich die verkleinerte Version dieses Frameworks über eine separate Pfadkonfiguration in meine Gruntdatei ein. Während ich in meinem normalen main.js die nicht-minimierte Version für die Entwicklung habe.
Jetzt möchte ich den Optimierer verwenden, um meinen eigenen Code zu optimieren, aber die externen Frameworks NICHT zu optimieren. Aber die externen Frameworks sollten in der resultierenden großen Javascript-Datei enthalten sein. Grundsätzlich möchte ich dem Optimierer mitteilen, dass er in einigen Fällen die Originaldatei verwenden soll.
Kann ich es so machen?
Ich habe nur eine globale Ausschlussoption gefunden, so dass einige Module in der resultierenden optimierten js überhaupt nicht enthalten sind.
Das ist meine Grunzen Konfiguration:
requirejs: {
compile: {
options: {
baseUrl: "<%= pkg.folders.jsSource %>",
name: "../external-libs/almond-0.1.1",
include: "main",
mainConfigFile: "<%= pkg.folders.jsSource %>/main.js",
out: "<%= pkg.folders.build + pkg.name + '-' + pkg.version %>/js/main.js",
//logLevel: 0,
optimize: "uglify2",
//optimize: "none",
paths: {
'angular':'../external-libs/min/angular-1.0.4',
'jquery':'../external-libs/min/jquery-1.7.2',
'jquery.mobile':'../external-libs/min/jquery.mobile-1.2.0',
'adapter': '../external-libs/min/jquery-mobile-angular-adapter-1.2.0',
'moment': '../external-libs/moment-1.6.2.min',
'iscroll': '../external-libs/min/iscroll-4.2.5',
'iscrollview': '../external-libs/min/jquery.mobile.iscrollview-1.2.6',
'add2Home': '../external-libs/min/add2home',
'config/config': "config/<%=configDatei%>"
}
}
}
},
Und das ist der relevante Teil der main.js:
require.config({
paths:{
'angular':'../external-libs/angular-1.0.4',
'jquery':'../external-libs/jquery-1.7.2',
'jquery.mobile':'../external-libs/jquery.mobile-1.2.0',
'adapter': '../external-libs/jquery-mobile-angular-adapter-1.2.0',
'moment': '../external-libs/moment-1.6.2.min',
'iscroll': '../external-libs/iscroll-4.2.5',
'iscrollview': '../external-libs/jquery.mobile.iscrollview-1.2.6',
'add2Home': '../external-libs/add2home'
},
shim:{
'angular':{ deps:['jquery'], exports:'angular' },
'iscroll':{ deps:['jquery'], exports:'iscroll' },
'iscrollview':{ deps:['jquery.mobile', 'iscroll'], exports:'iscrollview' }
}
});
Vielen Dank für jede Hilfe.
Diese Lösung funktioniert für mich nicht grunzen 0.4.1 und Grunzen-contrib-requirejs mit 0.4.1 Wenn ich angeben „leer:“ verunstalten wird entweder im uglify Prozess noch enthalten sind (unter Verwendung der Datei/uglify2). Ich bekomme die gleichen Ergebnisse, egal ob ich eine einzelne Datei oder ein ganzes App-Verzeichnis optimiere. –
Funktioniert auch nicht für mich. – kaiser
Grunt 0.4.5, Requirejs 2.1.9. Klappt wunderbar ! –