Gruntfile.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. 'use strict';
  2. module.exports = function (grunt) {
  3. grunt.initConfig({
  4. pkg: grunt.file.readJSON('package.json'),
  5. less: {
  6. dist: {
  7. options: {
  8. strictMath: true,
  9. sourceMap: true,
  10. outputSourceFiles: true,
  11. sourceMapURL: '<%= pkg.name %>.css.map',
  12. sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
  13. },
  14. src: 'src/less/colorpicker.less',
  15. dest: 'dist/css/<%= pkg.name %>.css'
  16. }
  17. },
  18. cssmin: {
  19. options: {
  20. compatibility: 'ie8',
  21. keepSpecialComments: '*',
  22. sourceMap: true,
  23. advanced: false
  24. },
  25. dist: {
  26. src: 'dist/css/<%= pkg.name %>.css',
  27. dest: 'dist/css/<%= pkg.name %>.min.css'
  28. }
  29. },
  30. jshint: {
  31. options: {
  32. jshintrc: '.jshintrc'
  33. },
  34. files: [
  35. 'Gruntfile.js',
  36. 'docs/docs.js',
  37. 'dist/js/<%= pkg.name %>.js'
  38. ]
  39. },
  40. jsbeautifier: {
  41. options: {
  42. js: {
  43. braceStyle: "collapse",
  44. breakChainedMethods: false,
  45. e4x: false,
  46. evalCode: false,
  47. indentChar: " ",
  48. indentLevel: 0,
  49. indentSize: 2,
  50. indentWithTabs: false,
  51. jslintHappy: false,
  52. keepArrayIndentation: false,
  53. keepFunctionIndentation: false,
  54. maxPreserveNewlines: 2,
  55. preserveNewlines: true,
  56. spaceBeforeConditional: true,
  57. spaceInParen: false,
  58. unescapeStrings: false,
  59. wrapLineLength: 0,
  60. endWithNewline: true
  61. }
  62. },
  63. src: ['src/js/*.js', 'docs/docs.js'],
  64. dist: ['dist/js/<%= pkg.name %>.js']
  65. },
  66. combine: {
  67. js: {
  68. input: 'src/js/colorpicker-plugin-wrapper.js',
  69. output: 'dist/js/<%= pkg.name %>.js',
  70. tokens: [{
  71. token: "//@version",
  72. string: '<%= pkg.version %>'
  73. }, {
  74. token: "//@colorpicker-color",
  75. file: 'src/js/colorpicker-color.js'
  76. }, {
  77. token: "//@colorpicker-defaults",
  78. file: 'src/js/colorpicker-defaults.js'
  79. }, {
  80. token: "//@colorpicker-component",
  81. file: 'src/js/colorpicker-component.js'
  82. }]
  83. },
  84. less: {
  85. input: 'src/less/colorpicker.less',
  86. output: 'src/less/colorpicker.less',
  87. tokens: [{
  88. token: "//@version",
  89. string: '<%= pkg.version %>'
  90. }]
  91. }
  92. },
  93. strip_code: {
  94. src: {
  95. src: 'dist/js/*.js'
  96. }
  97. },
  98. uglify: {
  99. options: {
  100. banner: '/*!\n * Bootstrap Colorpicker v<%= pkg.version %>\n' +
  101. ' * https://itsjavi.com/bootstrap-colorpicker/\n */\n'
  102. },
  103. dist: {
  104. files: {
  105. 'dist/js/<%= pkg.name %>.min.js': [
  106. 'dist/js/<%= pkg.name %>.js'
  107. ]
  108. }
  109. }
  110. },
  111. watch: {
  112. less: {
  113. files: [
  114. 'src/less/*.less'
  115. ],
  116. tasks: ['combine:less', 'less', 'cssmin']
  117. },
  118. js: {
  119. files: [
  120. 'src/js/*.js',
  121. 'docs/docs.js'
  122. ],
  123. tasks: ['jsbeautifier:src', 'combine:js', 'jsbeautifier:dist', 'uglify', 'jshint']
  124. },
  125. handlebars: {
  126. files: [
  127. 'docs/*.hbs',
  128. 'docs/**/*.hbs',
  129. 'docs/helpers/**/*.js'
  130. ],
  131. tasks: ['assemble']
  132. }
  133. },
  134. assemble: {
  135. options: {
  136. assets: 'docs/assets',
  137. helpers: ['docs/helpers/code'],
  138. partials: ['docs/includes/**/*.hbs'],
  139. layout: ['docs/layout.hbs'],
  140. data: ['package.json'],
  141. flatten: true
  142. },
  143. site: {
  144. src: ['docs/pages/*.hbs'],
  145. dest: './'
  146. }
  147. },
  148. clean: {
  149. dist: [
  150. 'dist/css/*',
  151. 'dist/js/*',
  152. 'index_new.html'
  153. ]
  154. }
  155. });
  156. // Load tasks
  157. grunt.loadNpmTasks('grunt-contrib-clean');
  158. grunt.loadNpmTasks('grunt-contrib-less');
  159. grunt.loadNpmTasks('grunt-contrib-cssmin');
  160. grunt.loadNpmTasks('grunt-jsbeautifier');
  161. grunt.loadNpmTasks('grunt-combine');
  162. grunt.loadNpmTasks('grunt-contrib-uglify');
  163. grunt.loadNpmTasks('grunt-contrib-watch');
  164. grunt.loadNpmTasks('grunt-contrib-jshint');
  165. grunt.loadNpmTasks('grunt-assemble');
  166. grunt.loadNpmTasks('grunt-strip-code');
  167. // Register tasks
  168. grunt.registerTask('default', [
  169. 'clean',
  170. 'combine:less',
  171. 'less',
  172. 'cssmin',
  173. 'jsbeautifier:src',
  174. 'combine:js',
  175. 'jsbeautifier:dist',
  176. 'strip_code',
  177. 'uglify',
  178. 'assemble',
  179. 'jshint'
  180. ]);
  181. grunt.registerTask('dev', [
  182. 'watch'
  183. ]);
  184. };