gruntfile.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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'],
  63. dest: 'js/searxng.js'
  64. }
  65. },
  66. uglify: {
  67. options: {
  68. output: {
  69. comments: 'some'
  70. },
  71. sourceMap: true,
  72. },
  73. dist: {
  74. files: {
  75. 'js/searxng.min.js': ['<%= concat.dist.dest %>']
  76. }
  77. }
  78. },
  79. jshint: {
  80. files: ['gruntfile.js', 'src/js/*.js'], // files in __common__ are linted by es lint in simple theme
  81. options: {
  82. reporterOutput: "",
  83. esversion: 6,
  84. // options here to override JSHint defaults
  85. globals: {
  86. jQuery: true,
  87. console: true,
  88. module: true,
  89. document: true,
  90. }
  91. }
  92. },
  93. less: {
  94. development: {
  95. options: {
  96. paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "src/less/bootstrap"]
  97. },
  98. files: {
  99. "css/bootstrap.css": "src/less/bootstrap/bootstrap.less",
  100. "css/pointhi.css": "src/less/pointhi/oscar.less",
  101. "css/logicodev.css": "src/less/logicodev/oscar.less",
  102. "css/logicodev-dark.css": "src/less/logicodev-dark/oscar.less"
  103. }
  104. },
  105. production: {
  106. options: {
  107. paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "src/less/bootstrap"],
  108. plugins: [
  109. new (require('less-plugin-clean-css'))()
  110. ],
  111. sourceMap: true,
  112. sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map';},
  113. outputSourceFiles: false,
  114. sourceMapRootpath: '../'
  115. },
  116. files: {
  117. "css/bootstrap.min.css": "css/bootstrap.css",
  118. "css/leaflet.min.css": "css/leaflet.css",
  119. "css/pointhi.min.css": "src/less/pointhi/oscar.less",
  120. "css/logicodev.min.css": "src/less/logicodev/oscar.less",
  121. "css/logicodev-dark.min.css": "src/less/logicodev-dark/oscar.less"
  122. }
  123. },
  124. },
  125. watch: {
  126. scripts: {
  127. files: ['<%= jshint.files %>'],
  128. tasks: ['jshint', 'concat', 'uglify']
  129. },
  130. oscar_styles: {
  131. files: ['src/less/pointhi/**/*.less'],
  132. tasks: ['less:development', 'less:production']
  133. },
  134. bootstrap_styles: {
  135. files: ['less/bootstrap/**/*.less'],
  136. tasks: ['less:bootstrap']
  137. }
  138. }
  139. });
  140. grunt.loadNpmTasks('grunt-contrib-copy');
  141. grunt.loadNpmTasks('grunt-contrib-uglify');
  142. grunt.loadNpmTasks('grunt-contrib-jshint');
  143. grunt.loadNpmTasks('grunt-contrib-watch');
  144. grunt.loadNpmTasks('grunt-contrib-concat');
  145. grunt.loadNpmTasks('grunt-contrib-less');
  146. grunt.registerTask('test', ['jshint']);
  147. grunt.registerTask('default', ['copy', 'jshint', 'concat', 'uglify', 'less']);
  148. grunt.registerTask('styles', ['less']);
  149. };