gruntfile.js 3.4 KB

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