]>
Commit | Line | Data |
---|---|---|
31f18b77 FG |
1 | // AdminLTE Gruntfile |
2 | module.exports = function (grunt) { | |
3 | ||
4 | 'use strict'; | |
5 | ||
6 | grunt.initConfig({ | |
7 | watch: { | |
8 | // If any .less file changes in directory "build/less/" run the "less"-task. | |
9 | files: ["build/less/*.less", "build/less/skins/*.less", "dist/js/app.js"], | |
10 | tasks: ["less", "uglify"] | |
11 | }, | |
12 | // "less"-task configuration | |
13 | // This task will compile all less files upon saving to create both AdminLTE.css and AdminLTE.min.css | |
14 | less: { | |
15 | // Development not compressed | |
16 | development: { | |
17 | options: { | |
18 | // Whether to compress or not | |
19 | compress: false | |
20 | }, | |
21 | files: { | |
22 | // compilation.css : source.less | |
23 | "dist/css/AdminLTE.css": "build/less/AdminLTE.less", | |
24 | //Non minified skin files | |
25 | "dist/css/skins/skin-blue.css": "build/less/skins/skin-blue.less", | |
26 | "dist/css/skins/skin-black.css": "build/less/skins/skin-black.less", | |
27 | "dist/css/skins/skin-yellow.css": "build/less/skins/skin-yellow.less", | |
28 | "dist/css/skins/skin-green.css": "build/less/skins/skin-green.less", | |
29 | "dist/css/skins/skin-red.css": "build/less/skins/skin-red.less", | |
30 | "dist/css/skins/skin-purple.css": "build/less/skins/skin-purple.less", | |
31 | "dist/css/skins/skin-blue-light.css": "build/less/skins/skin-blue-light.less", | |
32 | "dist/css/skins/skin-black-light.css": "build/less/skins/skin-black-light.less", | |
33 | "dist/css/skins/skin-yellow-light.css": "build/less/skins/skin-yellow-light.less", | |
34 | "dist/css/skins/skin-green-light.css": "build/less/skins/skin-green-light.less", | |
35 | "dist/css/skins/skin-red-light.css": "build/less/skins/skin-red-light.less", | |
36 | "dist/css/skins/skin-purple-light.css": "build/less/skins/skin-purple-light.less", | |
37 | "dist/css/skins/_all-skins.css": "build/less/skins/_all-skins.less" | |
38 | } | |
39 | }, | |
40 | // Production compresses version | |
41 | production: { | |
42 | options: { | |
43 | // Whether to compress or not | |
44 | compress: true | |
45 | }, | |
46 | files: { | |
47 | // compilation.css : source.less | |
48 | "dist/css/AdminLTE.min.css": "build/less/AdminLTE.less", | |
49 | // Skins minified | |
50 | "dist/css/skins/skin-blue.min.css": "build/less/skins/skin-blue.less", | |
51 | "dist/css/skins/skin-black.min.css": "build/less/skins/skin-black.less", | |
52 | "dist/css/skins/skin-yellow.min.css": "build/less/skins/skin-yellow.less", | |
53 | "dist/css/skins/skin-green.min.css": "build/less/skins/skin-green.less", | |
54 | "dist/css/skins/skin-red.min.css": "build/less/skins/skin-red.less", | |
55 | "dist/css/skins/skin-purple.min.css": "build/less/skins/skin-purple.less", | |
56 | "dist/css/skins/skin-blue-light.min.css": "build/less/skins/skin-blue-light.less", | |
57 | "dist/css/skins/skin-black-light.min.css": "build/less/skins/skin-black-light.less", | |
58 | "dist/css/skins/skin-yellow-light.min.css": "build/less/skins/skin-yellow-light.less", | |
59 | "dist/css/skins/skin-green-light.min.css": "build/less/skins/skin-green-light.less", | |
60 | "dist/css/skins/skin-red-light.min.css": "build/less/skins/skin-red-light.less", | |
61 | "dist/css/skins/skin-purple-light.min.css": "build/less/skins/skin-purple-light.less", | |
62 | "dist/css/skins/_all-skins.min.css": "build/less/skins/_all-skins.less" | |
63 | } | |
64 | } | |
65 | }, | |
66 | // Uglify task info. Compress the js files. | |
67 | uglify: { | |
68 | options: { | |
69 | mangle: true, | |
70 | preserveComments: 'some' | |
71 | }, | |
72 | my_target: { | |
73 | files: { | |
74 | 'dist/js/app.min.js': ['dist/js/app.js'] | |
75 | } | |
76 | } | |
77 | }, | |
78 | // Build the documentation files | |
79 | includes: { | |
80 | build: { | |
81 | src: ['*.html'], // Source files | |
82 | dest: 'documentation/', // Destination directory | |
83 | flatten: true, | |
84 | cwd: 'documentation/build', | |
85 | options: { | |
86 | silent: true, | |
87 | includePath: 'documentation/build/include' | |
88 | } | |
89 | } | |
90 | }, | |
91 | ||
92 | // Optimize images | |
93 | image: { | |
94 | dynamic: { | |
95 | files: [{ | |
96 | expand: true, | |
97 | cwd: 'build/img/', | |
98 | src: ['**/*.{png,jpg,gif,svg,jpeg}'], | |
99 | dest: 'dist/img/' | |
100 | }] | |
101 | } | |
102 | }, | |
103 | ||
104 | // Validate JS code | |
105 | jshint: { | |
106 | options: { | |
107 | jshintrc: '.jshintrc' | |
108 | }, | |
109 | core: { | |
110 | src: 'dist/js/app.js' | |
111 | }, | |
112 | demo: { | |
113 | src: 'dist/js/demo.js' | |
114 | }, | |
115 | pages: { | |
116 | src: 'dist/js/pages/*.js' | |
117 | } | |
118 | }, | |
119 | ||
120 | // Validate CSS files | |
121 | csslint: { | |
122 | options: { | |
123 | csslintrc: 'build/less/.csslintrc' | |
124 | }, | |
125 | dist: [ | |
126 | 'dist/css/AdminLTE.css', | |
127 | ] | |
128 | }, | |
129 | ||
130 | // Validate Bootstrap HTML | |
131 | bootlint: { | |
132 | options: { | |
133 | relaxerror: ['W005'] | |
134 | }, | |
135 | files: ['pages/**/*.html', '*.html'] | |
136 | }, | |
137 | ||
138 | // Delete images in build directory | |
139 | // After compressing the images in the build/img dir, there is no need | |
140 | // for them | |
141 | clean: { | |
142 | build: ["build/img/*"] | |
143 | } | |
144 | }); | |
145 | ||
146 | // Load all grunt tasks | |
147 | ||
148 | // LESS Compiler | |
149 | grunt.loadNpmTasks('grunt-contrib-less'); | |
150 | // Watch File Changes | |
151 | grunt.loadNpmTasks('grunt-contrib-watch'); | |
152 | // Compress JS Files | |
153 | grunt.loadNpmTasks('grunt-contrib-uglify'); | |
154 | // Include Files Within HTML | |
155 | grunt.loadNpmTasks('grunt-includes'); | |
156 | // Optimize images | |
157 | grunt.loadNpmTasks('grunt-image'); | |
158 | // Validate JS code | |
159 | grunt.loadNpmTasks('grunt-contrib-jshint'); | |
160 | // Delete not needed files | |
161 | grunt.loadNpmTasks('grunt-contrib-clean'); | |
162 | // Lint CSS | |
163 | grunt.loadNpmTasks('grunt-contrib-csslint'); | |
164 | // Lint Bootstrap | |
165 | grunt.loadNpmTasks('grunt-bootlint'); | |
166 | ||
167 | // Linting task | |
168 | grunt.registerTask('lint', ['jshint', 'csslint', 'bootlint']); | |
169 | ||
170 | // The default task (running "grunt" in console) is "watch" | |
171 | grunt.registerTask('default', ['watch']); | |
172 | }; |