module.exports = grunt => { 'use strict'; require('load-grunt-tasks')(grunt); grunt.initConfig({ requirejs: { compileProject: { options: { include: ['src/js/core'], out: 'intermediate/requirejs.js', optimize: 'none', paths: { 'events': 'empty:', 'electron': 'empty:' } } } }, babel: { dist: { files: [{ src: ['intermediate/requirejs.js'], dest: 'intermediate/babel.js' }] } }, replace: { dist: { options: { patterns: [{ match: /\\n +/g, replacement: '' },{ match: / +/g, replacement: ' ' },{ match: /\/*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, replacement: '' }] }, files: [{ expand: true, src: ['intermediate/babel.js'], dest: '' }] }, nongreedy: { options: { patterns: [{ match: /\\n +/g, replacement: '' },{ match: / +/g, replacement: ' ' },{ match: /\/\*(.|[\r\n])*?\*\//g, replacement: '' }] }, files: [{ expand: true, src: ['intermediate/babel.js'], dest: '' }] } }, amdclean: { options: { wrap: { start: '(function() {\n\n "use strict";\n\n var electron = require("electron");\n', end: '\n\n}());' }, escodegen: { format: { indent: { style: ' ', base: 1 } } }, aggressiveOptimizations: true, transformAMDChecks: false }, dist: { src: 'intermediate/babel.js', dest: 'dist/js/main.js' } }, clean: [ 'intermediate' ] }); grunt.registerTask("js", [ "requirejs", "babel", "replace", "amdclean", "clean" ]); grunt.registerTask("js-noclean", [ "requirejs", "babel", "replace", "amdclean" ]); grunt.registerTask("fastjs", ["requirejs", "babel", "replace:nongreedy", "amdclean", "clean" ]); grunt.registerTask("fastjs-noclean", ["requirejs", "babel", "replace:nongreedy", "amdclean" ]); };