gruntfile.js 4.3 KB

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