Gruntfile.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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. uglify: {
  94. options: {
  95. banner: '/*!\n * Bootstrap Colorpicker v<%= pkg.version %>\n' +
  96. ' * https://itsjavi.com/bootstrap-colorpicker/\n */\n'
  97. },
  98. dist: {
  99. files: {
  100. 'dist/js/<%= pkg.name %>.min.js': [
  101. 'dist/js/<%= pkg.name %>.js'
  102. ]
  103. }
  104. }
  105. },
  106. watch: {
  107. less: {
  108. files: [
  109. 'src/less/*.less'
  110. ],
  111. tasks: ['combine:less', 'less', 'cssmin']
  112. },
  113. js: {
  114. files: [
  115. 'src/js/*.js',
  116. 'docs/docs.js'
  117. ],
  118. tasks: ['jsbeautifier:src', 'combine:js', 'jsbeautifier:dist', 'uglify', 'jshint']
  119. },
  120. handlebars: {
  121. files: [
  122. 'docs/*.hbs',
  123. 'docs/**/*.hbs',
  124. 'docs/helpers/**/*.js'
  125. ],
  126. tasks: ['assemble']
  127. }
  128. },
  129. assemble: {
  130. options: {
  131. assets: 'docs/assets',
  132. helpers: ['docs/helpers/code'],
  133. partials: ['docs/includes/**/*.hbs'],
  134. layout: ['docs/layout.hbs'],
  135. data: ['package.json'],
  136. flatten: true
  137. },
  138. site: {
  139. src: ['docs/pages/*.hbs'],
  140. dest: './'
  141. }
  142. },
  143. clean: {
  144. dist: [
  145. 'dist/css/*',
  146. 'dist/js/*',
  147. 'index_new.html'
  148. ]
  149. }
  150. });
  151. // Load tasks
  152. grunt.loadNpmTasks('grunt-contrib-clean');
  153. grunt.loadNpmTasks('grunt-contrib-less');
  154. grunt.loadNpmTasks('grunt-contrib-cssmin');
  155. grunt.loadNpmTasks('grunt-jsbeautifier');
  156. grunt.loadNpmTasks('grunt-combine');
  157. grunt.loadNpmTasks('grunt-contrib-uglify');
  158. grunt.loadNpmTasks('grunt-contrib-watch');
  159. grunt.loadNpmTasks('grunt-contrib-jshint');
  160. grunt.loadNpmTasks('grunt-assemble');
  161. // Register tasks
  162. grunt.registerTask('default', [
  163. 'clean',
  164. 'combine:less',
  165. 'less',
  166. 'cssmin',
  167. 'jsbeautifier:src',
  168. 'combine:js',
  169. 'jsbeautifier:dist',
  170. 'uglify',
  171. 'assemble',
  172. 'jshint'
  173. ]);
  174. grunt.registerTask('dev', [
  175. 'watch'
  176. ]);
  177. };