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