Gruntfile.js 6.5 KB

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