gruntfile.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. module.exports = function(grunt) {
  2. grunt.initConfig({
  3. pkg: grunt.file.readJSON('package.json'),
  4. copy: {
  5. js: {
  6. expand: true,
  7. cwd: './node_modules',
  8. dest: './js/',
  9. flatten: true,
  10. filter: 'isFile',
  11. timestamp: true,
  12. src: [
  13. './bootstrap/dist/js/bootstrap.min.js',
  14. './corejs-typeahead/dist/typeahead.bundle.min.js',
  15. './jquery/dist/jquery.min.js',
  16. './leaflet/dist/leaflet.js',
  17. ]
  18. },
  19. css: {
  20. expand: true,
  21. cwd: './node_modules',
  22. dest: './css/',
  23. flatten: true,
  24. filter: 'isFile',
  25. timestamp: true,
  26. src: [
  27. './bootstrap/dist/css/bootstrap-theme.css',
  28. './bootstrap/dist/css/bootstrap-theme.min.css',
  29. './bootstrap/dist/css/bootstrap-theme.min.css.map',
  30. './leaflet/dist/leaflet.css',
  31. ]
  32. },
  33. fonts: {
  34. expand: true,
  35. cwd: './node_modules',
  36. dest: './fonts/',
  37. flatten: true,
  38. filter: 'isFile',
  39. timestamp: true,
  40. src: [
  41. './bootstrap/dist/fonts/glyphicons-*.*',
  42. ]
  43. },
  44. leaflet_images: {
  45. expand: true,
  46. cwd: './node_modules',
  47. dest: './css/images/',
  48. flatten: true,
  49. filter: 'isFile',
  50. timestamp: true,
  51. src: [
  52. './leaflet/dist/images/*.png',
  53. ]
  54. }
  55. },
  56. concat: {
  57. options: {
  58. separator: ';'
  59. },
  60. dist: {
  61. src: ['src/js/*.js'],
  62. dest: 'js/searx.js'
  63. }
  64. },
  65. uglify: {
  66. options: {
  67. sourceMap: true,
  68. banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n'
  69. },
  70. dist: {
  71. files: {
  72. 'js/searx.min.js': ['<%= concat.dist.dest %>']
  73. }
  74. }
  75. },
  76. jshint: {
  77. files: ['gruntfile.js', 'js/searx_src/*.js'],
  78. options: {
  79. reporterOutput: "",
  80. // options here to override JSHint defaults
  81. globals: {
  82. jQuery: true,
  83. console: true,
  84. module: true,
  85. document: true
  86. }
  87. }
  88. },
  89. less: {
  90. development: {
  91. options: {
  92. paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "src/less/bootstrap"]
  93. },
  94. files: {
  95. "css/bootstrap.css": "src/less/bootstrap/bootstrap.less",
  96. "css/pointhi.css": "src/less/pointhi/oscar.less",
  97. "css/logicodev.css": "src/less/logicodev-dark/oscar.less",
  98. "css/logicodev-dark.css": "src/less/logicodev/oscar.less"
  99. }
  100. },
  101. production: {
  102. options: {
  103. paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "less/bootstrap"],
  104. plugins: [
  105. new (require('less-plugin-clean-css'))()
  106. ],
  107. sourceMap: true,
  108. },
  109. files: {
  110. "css/bootstrap.min.css": "src/less/bootstrap/bootstrap.less",
  111. "css/leaflet.min.css": "css/leaflet.css",
  112. "css/pointhi.min.css": "src/less/pointhi/oscar.less",
  113. "css/logicodev.min.css": "src/less/logicodev/oscar.less",
  114. "css/logicodev-dark.min.css": "src/less/logicodev-dark/oscar.less"
  115. }
  116. },
  117. },
  118. watch: {
  119. scripts: {
  120. files: ['<%= jshint.files %>'],
  121. tasks: ['jshint', 'concat', 'uglify']
  122. },
  123. oscar_styles: {
  124. files: ['src/less/pointhi/**/*.less'],
  125. tasks: ['less:development', 'less:production']
  126. },
  127. bootstrap_styles: {
  128. files: ['less/bootstrap/**/*.less'],
  129. tasks: ['less:bootstrap']
  130. }
  131. }
  132. });
  133. grunt.loadNpmTasks('grunt-contrib-copy');
  134. grunt.loadNpmTasks('grunt-contrib-uglify');
  135. grunt.loadNpmTasks('grunt-contrib-jshint');
  136. grunt.loadNpmTasks('grunt-contrib-watch');
  137. grunt.loadNpmTasks('grunt-contrib-concat');
  138. grunt.loadNpmTasks('grunt-contrib-less');
  139. grunt.registerTask('test', ['jshint']);
  140. grunt.registerTask('default', ['copy', 'jshint', 'concat', 'uglify', 'less']);
  141. grunt.registerTask('styles', ['less']);
  142. };