1+ // Generated on <%= (new Date).toISOString().split('T')[0] %> using <%= pkg.name %> <%= pkg.version %>
12'use strict' ;
23var LIVERELOAD_PORT = 35729 ;
34var lrSnippet = require ( 'connect-livereload' ) ( { port : LIVERELOAD_PORT } ) ;
45var mountFolder = function ( connect , dir ) {
56 return connect . static ( require ( 'path' ) . resolve ( dir ) ) ;
67} ;
78
9+ // # Globbing
10+ // for performance reasons we're only matching one level down:
11+ // 'test/spec/{,*/}*.js'
12+ // use this if you want to recursively match all subfolders:
13+ // 'test/spec/**/*.js'
14+
815module . exports = function ( grunt ) {
916 // load all grunt tasks
1017 require ( 'matchdep' ) . filterDev ( 'grunt-*' ) . forEach ( grunt . loadNpmTasks ) ;
@@ -35,7 +42,7 @@ module.exports = function (grunt) {
3542 } ,
3643 compass : {
3744 files : [ '<%%= yeoman.app %>/styles/{,*/}*.{scss,sass}' ] ,
38- tasks : [ 'compass' ]
45+ tasks : [ 'compass:server ' ]
3946 } ,
4047 livereload : {
4148 options : {
@@ -75,6 +82,15 @@ module.exports = function (grunt) {
7582 ] ;
7683 }
7784 }
85+ } ,
86+ dist : {
87+ options : {
88+ middleware : function ( connect ) {
89+ return [
90+ mountFolder ( connect , yeomanConfig . dist )
91+ ] ;
92+ }
93+ }
7894 }
7995 } ,
8096 open : {
@@ -104,12 +120,6 @@ module.exports = function (grunt) {
104120 '<%%= yeoman.app %>/scripts/{,*/}*.js'
105121 ]
106122 } ,
107- karma : {
108- unit : {
109- configFile : 'karma.conf.js' ,
110- singleRun : true
111- }
112- } ,
113123 coffee : {
114124 dist : {
115125 files : [ {
@@ -134,11 +144,14 @@ module.exports = function (grunt) {
134144 options : {
135145 sassDir : '<%%= yeoman.app %>/styles' ,
136146 cssDir : '.tmp/styles' ,
147+ generatedImagesDir : '.tmp/images/generated' ,
137148 imagesDir : '<%%= yeoman.app %>/images' ,
138149 javascriptsDir : '<%%= yeoman.app %>/scripts' ,
139150 fontsDir : '<%%= yeoman.app %>/styles/fonts' ,
140151 importPath : '<%%= yeoman.app %>/bower_components' ,
141- relativeAssets : true
152+ httpImagesPath : '/images' ,
153+ httpGeneratedImagesPath : '/images/generated' ,
154+ relativeAssets : false
142155 } ,
143156 dist : { } ,
144157 server : {
@@ -147,12 +160,19 @@ module.exports = function (grunt) {
147160 }
148161 }
149162 } ,
150- concat : {
163+ // not used since Uglify task does concat,
164+ // but still available if needed
165+ /*concat: {
166+ dist: {}
167+ },*/
168+ rev : {
151169 dist : {
152170 files : {
153- '<%%= yeoman.dist %>/scripts/scripts.js' : [
154- '.tmp/scripts/{,*/}*.js' ,
155- '<%%= yeoman.app %>/scripts/{,*/}*.js'
171+ src : [
172+ '<%%= yeoman.dist %>/scripts/{,*/}*.js' ,
173+ '<%%= yeoman.dist %>/styles/{,*/}*.css' ,
174+ '<%%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ,
175+ '<%%= yeoman.dist %>/styles/fonts/*'
156176 ]
157177 }
158178 }
@@ -211,6 +231,53 @@ module.exports = function (grunt) {
211231 } ]
212232 }
213233 } ,
234+ // Put files not handled in other tasks here
235+ copy : {
236+ dist : {
237+ files : [ {
238+ expand : true ,
239+ dot : true ,
240+ cwd : '<%%= yeoman.app %>' ,
241+ dest : '<%%= yeoman.dist %>' ,
242+ src : [
243+ '*.{ico,png,txt}' ,
244+ '.htaccess' ,
245+ 'bower_components/**/*' ,
246+ 'images/{,*/}*.{gif,webp}' ,
247+ 'styles/fonts/*'
248+ ]
249+ } , {
250+ expand : true ,
251+ cwd : '.tmp/images' ,
252+ dest : '<%%= yeoman.dist %>/images' ,
253+ src : [
254+ 'generated/*'
255+ ]
256+ } ]
257+ }
258+ } ,
259+ concurrent : {
260+ server : [
261+ 'coffee:dist' ,
262+ 'compass:server'
263+ ] ,
264+ test : [
265+ 'coffee' ,
266+ 'compass'
267+ ] ,
268+ dist : [
269+ 'coffee' ,
270+ 'compass:dist' ,
271+ 'imagemin' ,
272+ 'htmlmin'
273+ ]
274+ } ,
275+ karma : {
276+ unit : {
277+ configFile : 'karma.conf.js' ,
278+ singleRun : true
279+ }
280+ } ,
214281 cdnify : {
215282 dist : {
216283 html : [ '<%%= yeoman.dist %>/*.html' ]
@@ -235,65 +302,35 @@ module.exports = function (grunt) {
235302 }
236303 }
237304 } ,
238- rev : {
239- dist : {
240- files : {
241- src : [
242- '<%%= yeoman.dist %>/scripts/{,*/}*.js' ,
243- '<%%= yeoman.dist %>/styles/{,*/}*.css' ,
244- '<%%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' ,
245- '<%%= yeoman.dist %>/styles/fonts/*'
246- ]
247- }
248- }
249- } ,
250- copy : {
251- dist : {
252- files : [ {
253- expand : true ,
254- dot : true ,
255- cwd : '<%%= yeoman.app %>' ,
256- dest : '<%%= yeoman.dist %>' ,
257- src : [
258- '*.{ico,txt}' ,
259- '.htaccess' ,
260- 'bower_components/**/*' ,
261- 'images/{,*/}*.{gif,webp}' ,
262- 'styles/fonts/*'
263- ]
264- } ]
265- }
266- }
267305 } ) ;
268306
269- grunt . registerTask ( 'server' , [
270- 'clean:server' ,
271- 'coffee:dist' ,
272- 'compass:server' ,
273- 'connect:livereload' ,
274- 'open' ,
275- 'watch'
276- ] ) ;
307+ grunt . registerTask ( 'server' , function ( target ) {
308+ if ( target === 'dist' ) {
309+ return grunt . task . run ( [ 'build' , 'open' , 'connect:dist:keepalive' ] ) ;
310+ }
311+
312+ grunt . task . run ( [
313+ 'clean:server' ,
314+ 'concurrent:server' ,
315+ 'connect:livereload' ,
316+ 'open' ,
317+ 'watch'
318+ ] ) ;
319+ } ) ;
277320
278321 grunt . registerTask ( 'test' , [
279322 'clean:server' ,
280- 'coffee' ,
281- 'compass' ,
323+ 'concurrent:test' ,
282324 'connect:test' ,
283325 'karma'
284326 ] ) ;
285327
286328 grunt . registerTask ( 'build' , [
287329 'clean:dist' ,
288- 'jshint' ,
289- 'test' ,
290- 'coffee' ,
291- 'compass:dist' ,
292330 'useminPrepare' ,
293- 'concat' ,
294- 'imagemin' ,
331+ 'concurrent:dist' ,
295332 'cssmin' ,
296- 'htmlmin ' ,
333+ 'concat ' ,
297334 'copy' ,
298335 'cdnify' ,
299336 'ngmin' ,
@@ -302,5 +339,9 @@ module.exports = function (grunt) {
302339 'usemin'
303340 ] ) ;
304341
305- grunt . registerTask ( 'default' , [ 'build' ] ) ;
342+ grunt . registerTask ( 'default' , [
343+ 'jshint' ,
344+ 'test' ,
345+ 'build'
346+ ] ) ;
306347} ;
0 commit comments