| 
									
										
										
										
											2021-06-24 12:12:13 +02:00
										 |  |  | /*jshint esversion: 6 */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  | module.exports = function(grunt) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const path = require('path'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   grunt.initConfig({ | 
					
						
							|  |  |  |     pkg: grunt.file.readJSON('package.json'), | 
					
						
							|  |  |  |     watch: { | 
					
						
							|  |  |  |       scripts: { | 
					
						
							| 
									
										
										
										
											2021-06-16 09:28:45 +02:00
										 |  |  |         files: ['src/**'], | 
					
						
							| 
									
										
										
										
											2021-06-18 17:33:56 +02:00
										 |  |  |         tasks: ['jshint', 'copy', 'concat', 'uglify', 'less:development', 'less:production'] | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2019-07-23 14:13:38 +02:00
										 |  |  |     jshint: { | 
					
						
							| 
									
										
										
										
											2021-06-16 09:28:45 +02:00
										 |  |  |       files: ['src/js/main/*.js', 'src/js/head/*.js', '../__common__/js/*.js'], | 
					
						
							| 
									
										
										
										
											2019-07-23 14:13:38 +02:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-06-22 13:33:05 +02:00
										 |  |  |     stylelint: { | 
					
						
							|  |  |  |       options: { | 
					
						
							|  |  |  |         formatter: 'unix', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       src: [ | 
					
						
							|  |  |  |         'src/less/**/*.less', | 
					
						
							|  |  |  |       ] | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-06-16 10:31:11 +02:00
										 |  |  |     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', | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2019-07-23 14:13:38 +02:00
										 |  |  |     concat: { | 
					
						
							|  |  |  |       head_and_body: { | 
					
						
							|  |  |  |         options: { | 
					
						
							|  |  |  |           separator: ';' | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         files: { | 
					
						
							| 
									
										
										
										
											2021-06-16 09:28:45 +02:00
										 |  |  |           'js/searx.head.js': ['src/js/head/*.js'], | 
					
						
							| 
									
										
										
										
											2021-06-16 12:13:37 +02:00
										 |  |  |           'js/searx.js': ['src/js/main/*.js', '../__common__/js/*.js', './node_modules/autocomplete-js/dist/autocomplete.js'] | 
					
						
							| 
									
										
										
										
											2019-07-23 14:13:38 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     uglify: { | 
					
						
							|  |  |  |       options: { | 
					
						
							| 
									
										
										
										
											2020-03-25 14:09:47 +01:00
										 |  |  |         banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n', | 
					
						
							| 
									
										
										
										
											2019-07-23 14:13:38 +02:00
										 |  |  |         output: { | 
					
						
							|  |  |  | 	        comments: 'some' | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2018-08-09 16:13:50 +02:00
										 |  |  |         ie8: false, | 
					
						
							|  |  |  |         warnings: true, | 
					
						
							|  |  |  |         compress: false, | 
					
						
							|  |  |  |         mangle: true, | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |         sourceMap: true | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       dist: { | 
					
						
							|  |  |  |         files: { | 
					
						
							| 
									
										
										
										
											2019-07-23 14:13:38 +02:00
										 |  |  |           'js/searx.head.min.js': ['js/searx.head.js'], | 
					
						
							|  |  |  |           'js/searx.min.js': ['js/searx.js'] | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     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', | 
					
						
							| 
									
										
										
										
											2021-06-16 10:37:06 +02:00
										 |  |  |           'src/fonts/magnet.svg', | 
					
						
							| 
									
										
										
										
											2021-06-24 12:12:13 +02:00
										 |  |  |           'node_modules/ionicons-npm/src/android-close.svg', | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |         ], | 
					
						
							|  |  |  |         dest: 'fonts', | 
					
						
							| 
									
										
										
										
											2021-06-18 17:33:56 +02:00
										 |  |  |         destLess: 'src/generated', | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |         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-' | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2021-06-16 13:28:08 +02:00
										 |  |  |     }, | 
					
						
							|  |  |  |     less: { | 
					
						
							|  |  |  |       development: { | 
					
						
							|  |  |  |         options: { | 
					
						
							|  |  |  |           paths: ["less"], | 
					
						
							|  |  |  |           banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         files: { | 
					
						
							|  |  |  |           "css/searx.css": "src/less/style.less", | 
					
						
							|  |  |  |           "css/searx-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: '../', | 
					
						
							|  |  |  |           banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         files: { | 
					
						
							|  |  |  |           "css/searx.min.css": "src/less/style.less", | 
					
						
							|  |  |  |           "css/searx-rtl.min.css": "src/less/style-rtl.less" | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   grunt.loadNpmTasks('grunt-contrib-watch'); | 
					
						
							| 
									
										
										
										
											2021-06-16 10:31:11 +02:00
										 |  |  |   grunt.loadNpmTasks('grunt-contrib-copy'); | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  |   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'); | 
					
						
							| 
									
										
										
										
											2021-06-22 13:33:05 +02:00
										 |  |  |   grunt.loadNpmTasks('grunt-stylelint'); | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   grunt.registerTask('test', ['jshint']); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-22 13:33:05 +02:00
										 |  |  |   grunt.registerTask('default', [ | 
					
						
							|  |  |  |     'jshint', | 
					
						
							|  |  |  |     'stylelint', | 
					
						
							|  |  |  |     'copy', | 
					
						
							|  |  |  |     'concat', | 
					
						
							|  |  |  |     'uglify', | 
					
						
							|  |  |  |     'less:development', | 
					
						
							|  |  |  |     'less:production' | 
					
						
							|  |  |  |   ]); | 
					
						
							| 
									
										
										
										
											2017-02-12 15:06:01 +01:00
										 |  |  | }; |