Gruntfile.js 5.5 KB

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