View difference between Paste ID: DhYTqGeg and dG0SKwrS
SHOW: | | - or go back to the newest paste.
1
/*global module:false*/
2
module.exports = function(grunt) {
3
4
	// Project configuration.
5
	grunt.initConfig({
6
		// Metadata.
7
		pkg: grunt.file.readJSON('package.json'),
8
9
		// Task configuration.
10
		uglify: {
11
			options: {
12
				banner: '<%= banner %>'
13
			},
14
			dist: {
15
				src: 'app/application.js',
16
				dest: 'dist/application.js'
17
			}
18
		},
19
20
		less: {
21
			dev: {
22
				files: { 'app/css/styles.css': 'app/less/styles.less' },
23
			},
24
			prod: {
25
				files: { 'app/css/styles.css': 'app/less/styles.less' },
26
				options: { yuicompress: true }
27
			}
28
		},
29
30
		htmlmin: {
31
			dist: {
32
				files: {'dist/index.html': 'app/index.html'},
33
				options: {
34
					removeComments: true,
35
					collapseWhitespace: true
36
				}
37
			}
38
		},
39
40
		imagemin: {
41
			dist: {
42
				options: {
43
					optimizationLevel: 7,
44
					progressive: true
45
				},
46
				files: {
47-
					'dist/imgs/': 'app/imgs/**',
47+
					'dist/imgs/': 'app/imgs/*',
48-
					'dist/css/images/': 'app/css/jquery-ui/cupertino/images/**'
48+
					'dist/imgs/icons/': 'app/imgs/icons/*',
49
					'dist/css/cupertino/images/': 'app/css/jquery-ui/cupertino/images/*'
50
				}
51
			}
52
		},
53
54
		cssmin: {
55
			dist: {
56
				files: {
57
					'dist/css/styles.css': [
58
						'app/css/jquery-ui/cupertino/jquery-ui.min.css',
59
						'app/css/styles.css'
60
					]
61
				},
62
				options: {
63
					keepSpecialComments: 0,
64
					report: 'min'
65
				}
66
			}
67
		},
68
69
		clean: ['dist'],
70
71
		jasmine: {
72
			test: {
73
				src: 'app/application.js',
74
				options: {
75
					specs: 'app/tests/*.js',
76
					styles: 'css/styles.css'
77
				}
78
			}
79
		},
80
81
		watch: {
82
			js: {
83
				files: [
84
					'app/controllers/**',
85
					'app/less/**',
86
					'app/extras/**',
87
					'app/less/**',
88
					'app/models/**',
89
					'app/routes/**',
90
					'app/templates/**',
91
					'app/vendor/**',
92
					'app/views/**',
93
					'routes.js',
94
					'store.js',
95
					'app.js'
96
				],
97
				tasks: ['build']
98
			},
99
			less: {
100
				files: ['app/less/*'],
101
				tasks: ['less:dev']
102
			}
103
		}
104
	});
105
106
	// These plugins provide necessary tasks.
107
	(function() {
108
		grunt.loadNpmTasks('grunt-contrib-concat');
109
		grunt.loadNpmTasks('grunt-contrib-uglify');
110
		grunt.loadNpmTasks('grunt-contrib-htmlmin');
111
		grunt.loadNpmTasks('grunt-contrib-imagemin');
112
		grunt.loadNpmTasks('grunt-contrib-cssmin');
113
		grunt.loadNpmTasks('grunt-contrib-less');
114
		grunt.loadNpmTasks('grunt-contrib-jasmine');
115
		grunt.loadNpmTasks('grunt-contrib-clean');
116
		grunt.loadNpmTasks('grunt-contrib-watch');
117
	})()
118
119
	grunt.registerTask('build', 'Runs ember-tools build command', function() {
120
		var done = this.async();
121
		grunt.util.spawn({ cmd: 'ember', args: ['build'] }, function(e, result) {
122
			grunt.log.writeln(result);
123
			done();
124
		});
125
	});
126
127-
		var folders = ['dist/css/images', 'dist/imgs'];
127+
128
		var folders = ['dist/css/images', 'dist/imgs/icons'];
129
		for (var i in folders) {
130
			var done = this.async();
131
			grunt.util.spawn({ cmd: 'mkdir', args: ['-p', folders[i]] }, function(e, result) {
132
				grunt.log.writeln('Folder created');
133
				done();
134
			});
135
		}
136
	});
137
138
	grunt.registerTask('default', ['dist']);
139
140
	grunt.registerTask('dist', [
141
		'clean',
142
		'prepare-dist',
143
		'build',
144
		'compress',
145
		'jasmine'
146
	]);
147
148
	grunt.registerTask('compress', [
149
		'less:prod',
150
		'htmlmin',
151
		'imagemin',
152
		'cssmin',
153
		'uglify'
154
	]);
155
156
	grunt.registerTask('css', ['less:dev']);
157
158
	grunt.registerTask('css-prod', ['less:prod']);
159
160
};