2013-05-04 3 views
12

Sto usando Yeoman (v1.x) con grunt (v0.4.2) per creare un progetto angolare. Il compito build concatena tutti i miei app/script file JS, ma lascia tutti i miei file di dipendenza unconcatenated, in modo che il mio index.html costruito rende queste chiamate:Utilizzo di grunt per concatenare tutti i file javascript del fornitore?

<script src="components/angular-unstable/angular.js"></script> 
<script src="components/jquery/jquery.js"></script> 
<script src="components/angular-resource/angular-resource.js"></script> 
<script src="components/bootstrap/js/bootstrap-dropdown.js"></script> 
<script src="components/moment/moment.js"></script> 
<script src="components/underscore/underscore.js"></script> 

<!-- xxxxxbuild:js scripts/scripts.js --> 
<script src="scripts/274baf7d.scripts.js"></script> 

vorrei tutti i componenti del mio progetto utilizza, vale a dire angular.js, jquery.js e così via, per essere in scripts.js. È facile riconfigurare il GruntFile per farlo? O questo non è fatto di default per una ragione pratica?

+0

Sì, ho la stessa domanda, perché è stato lasciato come predefinito? Cosa succede se usi CDN comuni, vuol dire che non dovrebbero essere concatenati? Inoltre che dire di cose come Modernizr? Non possono essere concatenati perché deve essere nella parte superiore della pagina. – CMCDragonkai

risposta

13

Sì, questo è facile da configurare. Basta aggiungere gli script dei fornitori nelle fonti che si superano le attività grugnite concat.

// Project configuration. 
grunt.initConfig({ 
    concat: { 
    dist: { 
     src: ['vendors/**/*.js', 'scripts/**/*.js'], 
     dest: 'built.js' 
    } 
    } 
}); 
+0

Sono curioso: so che browserify è una concatenazione basata su richieste di statuti. Si tratta di una sovrapposizione di funzionalità con grunt o ci sono diversi casi d'uso? – Jonah

+1

Beh, Grunt è semplicemente un corridore di compiti. Non ha alcuna comprensione di concatenazione o browserify. L'attività di concatenazione è un plugin Grunt. Un plugin Grunt è semplicemente un'attività registrata che puoi chiamare dalla tua riga di comando. Quindi, con Browserify, devi semplicemente utilizzare il plugin per grattare browserify e aggiungerlo al tuo flusso di lavoro e quindi non avrai bisogno di alcuna attività di concatenazione. Da parte mia, non utilizzo mai il concat task mentre utilizzo RequireJs e gestisce la concatenazione stessa tramite il suo plugin Grunt. –

+0

Grazie per la spiegazione – Jonah