Ho un progetto requirejs di lavoro che utilizza grunt per la creazione e la distribuzione. Se non si utilizza affatto l'ottimizzazione, la build funziona senza problemi e ottengo un file js per distribuirlo in produzione.Come escludere determinati file requireJS da uglifying/optimizing
Il problema che ho è che ho alcuni framework esterni (come angularJS) in cui ho già una versione ridotta/ottimizzata di esso e non voglio ottimizzarlo di nuovo.
Attualmente senza ottimizzazione includo la versione ridotta di questo framework tramite una configurazione di percorso separata nel mio gruntfile. Mentre nel mio main.js normale ho la versione non minified per lo sviluppo.
Ora voglio utilizzare l'ottimizzatore per ottimizzare il mio codice, ma NON per ottimizzare i framework esterni. Ma i framework esterni dovrebbero essere inclusi nel grande file javascript risultante. Fondamentalmente voglio dire all'ottimizzatore che in alcuni casi dovrebbe usare il file originale.
Posso farlo qualcosa di simile?
Ho trovato solo un'opzione di esclusione globale, in modo che alcuni moduli non siano inclusi nel js ottimizzato risultante.
Questa è la mia configurazione grugnito:
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%>"
}
}
}
},
e questa è la parte rilevante dei 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' }
}
});
Grazie per qualsiasi aiuto.
Questa soluzione non funziona per me usando grugnito 0.4.1 e grugnito-contrib-requirejs 0.4.1 Quando specifico "vuota:" il file è ancora in fase incluso nel processo di uglify (utilizzando uglify/uglify2). Ottengo gli stessi risultati se sto ottimizzando un singolo file o un'intera directory app. –
Non funziona neanche per me. – kaiser
Grunt 0.4.5, requirejs 2.1.9. Funziona come un fascino! –