module.exports = function (grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), jshint: { all: ['Gruntfile.js', 'src/js/app.js'] }, cssmin: { build: { files: { 'static/app/app.css': [ 'src/css/app.css' ] } } }, uglify: { options: { preserveComments: false, compress: true }, build: { files: { 'static/app/app.js': [ 'src/js/app.js' ], 'install/installer.js': [ 'src/js/installer.js' ], } } }, watch: { css: { files: [ 'src/css/app.css' ], tasks: ['cssmin'] }, scripts: { files: [ 'src/js/app.js', 'src/js/installer.js', ], tasks: ['uglify'] } }, copy: { main: { files: [ { expand: true, cwd: 'node_modules/@fortawesome/fontawesome-free', src: ['css/all.min.css', 'webfonts/**/*'], dest: 'static/fontawesome' }, { expand: true, cwd: 'node_modules/bootstrap/dist/css', src: ['bootstrap.min.css'], dest: 'static/bootstrap/css' }, { expand: true, cwd: 'node_modules/bootstrap/dist/js', src: ['bootstrap.bundle.min.js'], dest: 'static/bootstrap/js' }, { expand: true, cwd: 'node_modules/clipboard/dist', src: ['clipboard.min.js'], dest: 'static/clipboardjs' }, { expand: true, cwd: 'node_modules/video.js/dist', src: ['video.min.js', 'video-js.min.css'], dest: 'static/videojs' }, { expand: true, cwd: 'node_modules/highlightjs', src: ['styles/**/*', 'highlight.pack.min.js'], dest: 'static/highlightjs' }, {expand: true, cwd: 'node_modules/jquery/dist', src: ['jquery.min.js'], dest: 'static/jquery'} ], }, }, zip: { 'release.zip': [ 'app/**/*', 'bin/**/*', 'bootstrap/**/*', 'install/**/*', 'logs/**/', 'resources/cache', 'resources/sessions', 'resources/database', 'resources/lang/**/*', 'resources/templates/**/*', 'resources/schemas/**/*', 'resources/lang/**/*', 'static/**/*', 'vendor/**/*', '.htaccess', 'config.example.php', 'index.php', 'composer.json', 'composer.lock', 'LICENSE', 'favicon.ico', ] }, shell: { phpstan: { command: '"./vendor/bin/phpstan" analyse app resources/lang bin install' }, composer_no_dev: { command: 'composer install --no-dev' } } }); require('load-grunt-tasks')(grunt); grunt.registerTask('default', ['jshint', 'cssmin', 'uglify', 'copy']); grunt.registerTask('test', ['jshint']); grunt.registerTask('phpstan', ['shell:phpstan']); grunt.registerTask('composer_no_dev', ['shell:composer_no_dev']); grunt.registerTask('build-release', ['default', 'composer_no_dev', 'zip']); };