| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 | 
							- /*jshint esversion: 6 */
 
- module.exports = function(grunt) {
 
-   const path = require('path');
 
-   grunt.initConfig({
 
-     pkg: grunt.file.readJSON('package.json'),
 
-     watch: {
 
-       scripts: {
 
-         files: ['src/**'],
 
-         tasks: ['eslint', 'copy', 'concat', 'uglify', 'less:development', 'less:production']
 
-       }
 
-     },
 
-     eslint: {
 
-       options: {
 
-         configFile: '.eslintrc.json',
 
-         failOnError: false
 
-       },
 
-       target: [
 
-         'src/js/main/*.js',
 
-         'src/js/head/*.js',
 
-         '../__common__/js/*.js'
 
-       ],
 
-     },
 
-     stylelint: {
 
-       options: {
 
-         formatter: 'unix',
 
-       },
 
-       src: [
 
-         'src/less/**/*.less',
 
-       ]
 
-     },
 
-     copy: {
 
-       js: {
 
-         expand: true,
 
-         cwd: './node_modules',
 
-         dest: './js/',
 
-         flatten: true,
 
-         filter: 'isFile',
 
-         timestamp: true,
 
-         src: [
 
-           './leaflet/dist/leaflet.js',
 
-         ]
 
-       },
 
-       css: {
 
-         expand: true,
 
-         cwd: './node_modules',
 
-         dest: './css/',
 
-         flatten: true,
 
-         filter: 'isFile',
 
-         timestamp: true,
 
-         src: [
 
-           './leaflet/dist/leaflet.css',
 
-         ]
 
-       },
 
-       leaflet_images: {
 
-         expand: true,
 
-         cwd: './node_modules',
 
-         dest: './css/images/',
 
-         flatten: true,
 
-         filter: 'isFile',
 
-         timestamp: true,
 
-         src: [
 
-           './leaflet/dist/images/*.png',
 
-         ]
 
-       },
 
-     },
 
-     concat: {
 
-       head_and_body: {
 
-         options: {
 
-           separator: ';'
 
-         },
 
-         files: {
 
-           'js/searxng.head.js': ['src/js/head/*.js'],
 
-           'js/searxng.js': ['src/js/main/*.js', '../__common__/js/*.js', './node_modules/autocomplete-js/dist/autocomplete.js']
 
-         }
 
-       }
 
-     },
 
-     uglify: {
 
-       options: {
 
-         output: {
 
- 	        comments: 'some'
 
-         },
 
-         ie8: false,
 
-         warnings: true,
 
-         compress: false,
 
-         mangle: true,
 
-         sourceMap: true
 
-       },
 
-       dist: {
 
-         files: {
 
-           'js/searxng.head.min.js': ['js/searxng.head.js'],
 
-           'js/searxng.min.js': ['js/searxng.js']
 
-         }
 
-       }
 
-     },
 
-     webfont: {
 
-       icons: {
 
-         // src: 'node_modules/ionicons-npm/src/*.svg',
 
-         src: [
 
-           'node_modules/ionicons-npm/src/navicon-round.svg',
 
-           'node_modules/ionicons-npm/src/search.svg',
 
-           'node_modules/ionicons-npm/src/play.svg',
 
-           'node_modules/ionicons-npm/src/link.svg',
 
-           'node_modules/ionicons-npm/src/chevron-up.svg',
 
-           'node_modules/ionicons-npm/src/chevron-left.svg',
 
-           'node_modules/ionicons-npm/src/chevron-right.svg',
 
-           'node_modules/ionicons-npm/src/arrow-down-a.svg',
 
-           'node_modules/ionicons-npm/src/arrow-up-a.svg',
 
-           'node_modules/ionicons-npm/src/arrow-swap.svg',
 
-           'node_modules/ionicons-npm/src/telephone.svg',
 
-           'node_modules/ionicons-npm/src/android-arrow-dropdown.svg',
 
-           'node_modules/ionicons-npm/src/android-globe.svg',
 
-           'node_modules/ionicons-npm/src/android-time.svg',
 
-           'node_modules/ionicons-npm/src/location.svg',
 
-           'node_modules/ionicons-npm/src/alert-circled.svg',
 
-           'node_modules/ionicons-npm/src/android-alert.svg',
 
-           'node_modules/ionicons-npm/src/ios-film-outline.svg',
 
-           'node_modules/ionicons-npm/src/music-note.svg',
 
-           'node_modules/ionicons-npm/src/ion-close-round.svg',
 
-           'node_modules/ionicons-npm/src/android-more-vertical.svg',
 
-           'src/fonts/magnet.svg',
 
-           'node_modules/ionicons-npm/src/android-close.svg',
 
-         ],
 
-         dest: 'fonts',
 
-         destLess: 'src/generated',
 
-         options: {
 
-           font: 'ion',
 
-           hashes : true,
 
-           syntax: 'bem',
 
-           styles : 'font,icon',
 
-           types : 'eot,woff2,woff,ttf,svg',
 
-           order : 'eot,woff2,woff,ttf,svg',
 
-           stylesheets : ['css', 'less'],
 
-           relativeFontPath : '../fonts/',
 
-           autoHint : false,
 
-           normalize : false,
 
-           // ligatures : true,
 
-           optimize : true,
 
-           // fontHeight : 400,
 
-           rename : function(name) {
 
-             basename = path.basename(name);
 
-             if (basename === 'android-alert.svg') {
 
-               return 'error.svg';
 
-             }
 
-             if (basename === 'alert-circled.svg') {
 
-               return 'warning.svg';
 
-             }
 
-             if (basename === 'ion-close-round.svg') {
 
-               return 'close.svg';
 
-             }
 
-             return basename.replace(/(ios|md|android)-/i, '');
 
-           },
 
-           templateOptions: {
 
-             baseClass: 'ion-icon',
 
-             classPrefix: 'ion-'
 
-           }
 
-         }
 
-       }
 
-     },
 
-     less: {
 
-       development: {
 
-         options: {
 
-           paths: ["less"],
 
-         },
 
-         files: {
 
-           "css/searxng.css": "src/less/style.less",
 
-           "css/searxng-rtl.css": "src/less/style-rtl.less"
 
-         }
 
-       },
 
-       production: {
 
-         options: {
 
-           paths: ["less"],
 
-           plugins: [
 
-             new (require('less-plugin-clean-css'))()
 
-           ],
 
-           sourceMap: true,
 
-           sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map';},
 
-           outputSourceFiles: false,
 
-           sourceMapRootpath: '../',
 
-         },
 
-         files: {
 
-           "css/searxng.min.css": "src/less/style.less",
 
-           "css/searxng-rtl.min.css": "src/less/style-rtl.less"
 
-         }
 
-       },
 
-     },
 
-   });
 
-   grunt.loadNpmTasks('grunt-contrib-watch');
 
-   grunt.loadNpmTasks('grunt-contrib-copy');
 
-   grunt.loadNpmTasks('grunt-contrib-uglify');
 
-   grunt.loadNpmTasks('grunt-contrib-jshint');
 
-   grunt.loadNpmTasks('grunt-contrib-concat');
 
-   grunt.loadNpmTasks('grunt-contrib-less');
 
-   grunt.loadNpmTasks('grunt-contrib-cssmin');
 
-   grunt.loadNpmTasks('grunt-webfont');
 
-   grunt.loadNpmTasks('grunt-stylelint');
 
-   grunt.loadNpmTasks('grunt-eslint');
 
-   grunt.registerTask('test', ['jshint']);
 
-   grunt.registerTask('default', [
 
-     'eslint',
 
-     'stylelint',
 
-     'copy',
 
-     'concat',
 
-     'uglify',
 
-     'less:development',
 
-     'less:production'
 
-   ]);
 
- };
 
 
  |