2013-05-04 8 views
12

Używam Yeoman (v1.x) z gruntem (v0.4.2) do zbudowania projektu Angular. Zadaniem build skleja wszystkie moje app/script plików JS, ale pozostawia wszystkie moje pliki zależności unconcatenated, tak że mój zbudowany index.html sprawia, że ​​te połączenia:Używanie stępienia do łączenia wszystkich plików javascript dostawców?

<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> 

Chciałbym wszystkich składników mój projekt wykorzystuje tj angular.js, jquery.js i tak dalej, aby być w scripts.js. Czy łatwo jest ponownie skonfigurować plik GruntFile, aby to zrobić? Czy nie jest to robione domyślnie ze względów praktycznych?

+0

Tak, mam to samo pytanie, dlaczego jest to domyślne? Co się dzieje, jeśli używasz wspólnych numerów CDN, czy oznacza to, że nie powinny być łączone? A co z takimi rzeczami jak modernizator? Nie można ich również połączyć, ponieważ musi znajdować się na górze strony. – CMCDragonkai

Odpowiedz

13

Tak, jest to łatwe do skonfigurowania. Wystarczy dodać skrypty dostawców do źródeł, które przekazują zadanie concat.

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

Jestem ciekawy: wiem, że przeglądarka działa w trybie konkatenacji na podstawie żądań. Czy jest to nakładanie się funkcji z chrząkaniem, czy też są różne przypadki użycia? – Jonah

+1

Cóż, Grunt to po prostu biegacz zadań. Nie ma żadnego zrozumienia co do konkatenacji lub przeglądania. Zadanie konkatenacji to wtyczka Grunt. Wtyczka Grunt jest po prostu zarejestrowanym zadaniem, które możesz wywołać z wiersza poleceń. Tak więc, z Browserify, po prostu użyjesz wtyczki browserify i dodasz ją do swojego obiegu pracy - i wtedy nie będziesz potrzebował żadnego zadania konkatenacji. Z mojej strony, nigdy nie używam zadania typu concat, ponieważ używam RequireJs i samodzielnie obsługuję konkatenację za pomocą jego wtyczki Grunt. –

+0

Dzięki za wyjaśnienie – Jonah