|  | /** | 
|  | * Grunt build file for Kalamar. | 
|  | * Create assets (based on files in /dev) running | 
|  | *   $ grunt | 
|  | * in the current folder. | 
|  | * | 
|  | * @author Nils Diewald | 
|  | */ | 
|  | /* | 
|  | * TODO: Use https://www.npmjs.com/package/grunt-contrib-compress | 
|  | *   for assets. | 
|  | *   http://yui.github.io/yuidoc/ | 
|  | * TODO: Use https://www.npmjs.com/package/grunt-contrib-yuidoc | 
|  | * TODO: Implement a LaTeX generator for a pdf of the dokumentation | 
|  | */ | 
|  |  | 
|  | const sass = require('sass'); | 
|  |  | 
|  | module.exports = function(grunt) { | 
|  | var config; | 
|  | var includeFile = 'default'; | 
|  | if (grunt.file.exists('kalamar.conf.js')) { | 
|  | includeFile = 'root/kalamar.conf'; | 
|  | }; | 
|  |  | 
|  | // Generate requireJS files for l10n | 
|  | var reqTasks = []; | 
|  | var uglyFiles = { | 
|  | 'public/js/korap-plugin-<%= pkg.pluginVersion %>.js': ['dev/js/src/plugin/client.js'] | 
|  | }; | 
|  |  | 
|  | for (var i in {'en' : 0, 'de' : 1}) { | 
|  |  | 
|  | reqTasks.push({ | 
|  | options: { | 
|  |  | 
|  | optimize: "none", | 
|  | baseUrl: 'dev/js/src', | 
|  | paths : { | 
|  | 'lib': '../lib', | 
|  | 'root' : '../../..' | 
|  | }, | 
|  | wrap: true, | 
|  | // dir : 'public/js', | 
|  | name: 'lib/almond', | 
|  | include : [includeFile, "app/" + i], | 
|  | out: 'public/js/kalamar-<%= pkg.version %>-' + i + '.js' | 
|  | } | 
|  | }); | 
|  |  | 
|  | uglyFiles['public/js/kalamar-<%= pkg.version %>-' + i + '.js'] = ['public/js/kalamar-<%= pkg.version %>-' + i + '.js']; | 
|  | }; | 
|  |  | 
|  | grunt.initConfig({ | 
|  | pkg: grunt.file.readJSON('package.json'), | 
|  | requirejs: reqTasks, | 
|  | terser: { | 
|  | kalamar : { | 
|  | files: uglyFiles, | 
|  | options : { | 
|  | sourceMap: { | 
|  | includeSources: true | 
|  | } | 
|  | } | 
|  | } | 
|  | }, | 
|  | imagemin: { | 
|  | dynamic: { | 
|  | files: [{ | 
|  | expand: true, | 
|  | cwd: 'dev/img/', | 
|  | src: ['*.{png,gif,jpg}'], | 
|  | dest: 'public/img/' | 
|  | }] | 
|  | } | 
|  | }, | 
|  | sass: { | 
|  | dist: { | 
|  | options: { | 
|  | implementation: sass, | 
|  | style: 'compressed', | 
|  | outputStyle: 'compressed', | 
|  | sourceMap: true | 
|  | }, | 
|  | files: { | 
|  | 'public/css/kalamar-<%= pkg.version %>.css' : 'dev/scss/kalamar.scss', | 
|  | 'public/css/kalamar-plugin-<%= pkg.pluginVersion %>.css' : 'dev/scss/plugin.scss', | 
|  | 'dev/css/kalamar.css' : 'dev/scss/kalamar.scss', | 
|  | 'dev/css/kwic.css' : 'dev/scss/main/kwic.scss', | 
|  | 'dev/css/kalamar-plugin.css' : 'dev/scss/plugin.scss' | 
|  | } | 
|  | } | 
|  | }, | 
|  | // see https://github.com/gruntjs/grunt-contrib-copy/issues/64 | 
|  | jasmine: { | 
|  | pivotal: { | 
|  | src: [ | 
|  | 'dev/js/src/menu.js', | 
|  | 'dev/js/src/match.js', | 
|  | 'dev/js/src/hint.js', | 
|  | 'dev/js/src/vc.js' | 
|  | ], | 
|  | options: { | 
|  | specs: 'dev/js/spec/*Spec.js', | 
|  | vendor: ['dev/js/lib/require.js'] | 
|  | } | 
|  | } | 
|  | }, | 
|  |  | 
|  | // see https://github.com/gruntjs/grunt-contrib-copy/issues/64 | 
|  | // for copying binary files | 
|  | copy : { | 
|  | options: { | 
|  | process:false | 
|  | }, | 
|  | main: { | 
|  | files:[ | 
|  | { | 
|  | expand: true, | 
|  | cwd: 'dev/font/', | 
|  | src: '**', | 
|  | dest: 'public/font/', | 
|  | filter: 'isFile', | 
|  | nonull: true, | 
|  | timestamp: true | 
|  | }, | 
|  | { | 
|  | expand: true, | 
|  | cwd: 'dev/img/', | 
|  | src: '*.svg', | 
|  | dest: 'public/img/', | 
|  | filter: 'isFile', | 
|  | nonull:true, | 
|  | timestamp:true | 
|  | }, | 
|  | { | 
|  | src: 'dev/img/favicon.ico', | 
|  | dest: 'public/favicon.ico', | 
|  | timestamp:true | 
|  | }, | 
|  | { | 
|  | src: 'dev/robots.txt', | 
|  | dest: 'public/robots.txt', | 
|  | timestamp: true | 
|  | }, | 
|  | { | 
|  | src: 'public/css/kalamar-plugin-<%= pkg.pluginVersion %>.css', | 
|  | dest: 'public/css/kalamar-plugin-latest.css', | 
|  | timestamp: true | 
|  | }, | 
|  | { | 
|  | src: 'public/js/korap-plugin-<%= pkg.pluginVersion %>.js', | 
|  | dest: 'public/js/korap-plugin-latest.js', | 
|  | timestamp: true | 
|  | } | 
|  | ] | 
|  | } | 
|  | }, | 
|  | watch: { | 
|  | css: { | 
|  | files: ['dev/scss/**/*.scss'], | 
|  | tasks: ['sass'], | 
|  | options: { | 
|  | spawn: false | 
|  | } | 
|  | } | 
|  | }, | 
|  | }); | 
|  |  | 
|  | grunt.loadNpmTasks('grunt-contrib-imagemin'); | 
|  | grunt.loadNpmTasks('grunt-contrib-watch'); | 
|  | grunt.loadNpmTasks('grunt-sass'); | 
|  | grunt.loadNpmTasks('grunt-contrib-copy'); | 
|  | grunt.loadNpmTasks('grunt-terser'); | 
|  | grunt.loadNpmTasks('grunt-contrib-requirejs'); | 
|  | grunt.registerTask('img', ['imagemin','copy']); | 
|  | grunt.registerTask('js', ['requirejs']); | 
|  | grunt.registerTask('css', ['sass']); | 
|  | grunt.registerTask( | 
|  | 'default', | 
|  | ['requirejs', 'terser', 'imagemin', 'sass', 'copy'] | 
|  | ); | 
|  | }; |