Gruntfile.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. module.exports = function (grunt) {
  2. // Full list of files that must be included by RequireJS
  3. amd_includes = [
  4. "almond"
  5. ]
  6. full_includes = [
  7. "jquery"
  8. ]
  9. grunt.initConfig({
  10. uglify: {
  11. "dist": {
  12. src: 'dist/js/select2.js',
  13. dest: 'dist/js/select2.min.js'
  14. },
  15. "dist.full": {
  16. src: 'dist/js/select2.full.js',
  17. dest: 'dist/js/select2.full.min.js'
  18. }
  19. },
  20. qunit: {
  21. all: [
  22. "tests/**/*.html"
  23. ]
  24. },
  25. jshint: {
  26. options: {
  27. jshintrc: true
  28. },
  29. code: {
  30. src: ["src/js/**/*.js"]
  31. },
  32. tests: {
  33. src: ["tests/**/*.js"]
  34. }
  35. },
  36. sass: {
  37. dist: {
  38. options: {
  39. outputStyle: "compressed"
  40. },
  41. files: {
  42. "dist/css/select2.min.css": [
  43. "src/scss/core.scss",
  44. "src/scss/theme/default/layout.css"
  45. ]
  46. }
  47. },
  48. dev: {
  49. options: {
  50. outputStyle: "nested"
  51. },
  52. files: {
  53. "dist/css/select2.css": [
  54. "src/scss/core.scss",
  55. "src/scss/theme/default/layout.css"
  56. ]
  57. }
  58. }
  59. },
  60. requirejs: {
  61. "dist": {
  62. options: {
  63. baseUrl: "src/js",
  64. optimize: "none",
  65. name: "select2/core",
  66. out: "dist/js/select2.js",
  67. include: amd_includes,
  68. paths: {
  69. almond: "../../vendor/almond-0.2.9",
  70. jquery: "jquery.shim"
  71. }
  72. }
  73. },
  74. "dist.full": {
  75. options: {
  76. baseUrl: "src/js",
  77. optimize: "none",
  78. name: "select2/core",
  79. out: "dist/js/select2.full.js",
  80. include: amd_includes.concat(full_includes),
  81. paths: {
  82. almond: "../../vendor/almond-0.2.9",
  83. jquery: "../../vendor/jquery-2.1.0"
  84. }
  85. }
  86. },
  87. "amd": {
  88. options: {
  89. baseUrl: "src/js",
  90. optimize: "none",
  91. name: "select2/core",
  92. out: "dist/js/select2.amd.js",
  93. paths: {
  94. jquery: "empty:"
  95. }
  96. }
  97. },
  98. "amd.full": {
  99. options: {
  100. baseUrl: "src/js",
  101. optimize: "none",
  102. name: "select2/core",
  103. out: "dist/js/select2.amd.full.js",
  104. include: full_includes,
  105. paths: {
  106. jquery: "empty:"
  107. }
  108. }
  109. }
  110. },
  111. concat: {
  112. "dist": {
  113. src: [
  114. "src/coffee/start.js",
  115. "dist/js/select2.js",
  116. "src/coffee/end.js"
  117. ],
  118. dest: "dist/js/select2.js"
  119. },
  120. "dist.full": {
  121. src: [
  122. "src/coffee/start.js",
  123. "dist/js/select2.full.js",
  124. "src/coffee/end.js"
  125. ],
  126. dest: "dist/js/select2.full.js"
  127. }
  128. },
  129. watch: {
  130. js: {
  131. files: [
  132. "src/js/select2/**/*.js",
  133. "tests/**/*.js",
  134. ],
  135. tasks: [
  136. "compile",
  137. "test",
  138. 'minify'
  139. ]
  140. },
  141. css: {
  142. files: [
  143. "src/scss/**/*.scss"
  144. ],
  145. tasks: [
  146. "compile",
  147. 'minify'
  148. ]
  149. }
  150. }
  151. });
  152. grunt.loadNpmTasks("grunt-contrib-concat")
  153. grunt.loadNpmTasks("grunt-contrib-jshint")
  154. grunt.loadNpmTasks("grunt-contrib-qunit")
  155. grunt.loadNpmTasks("grunt-contrib-requirejs")
  156. grunt.loadNpmTasks("grunt-contrib-uglify")
  157. grunt.loadNpmTasks("grunt-contrib-watch")
  158. grunt.loadNpmTasks("grunt-sass")
  159. grunt.registerTask("default", ["compile", "test", "minify"])
  160. grunt.registerTask("compile", ["requirejs", "sass:dev", "concat"])
  161. grunt.registerTask("minify", ["uglify", "sass:dist"])
  162. grunt.registerTask("test", ["qunit", "jshint"])
  163. }