/** * EGroupware Gruntfile.js * * @link http://www.egroupware.org * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @author Ralf Becker <rb@egroupware.org> * @copyright (c) 2016-21 by Ralf Becker <rb@egroupware.org> */ /** * To install grunt to build minified javascript files you need to run: * * sudo npm install -g grunt-cli * npm install # installs everything from package.json into node_modules dir * * To generate the now existing package.json: * npm init * npm install grunt --save-dev * npm install grunt-newer --save-dev * npm install grunt-contrib-cssmin --save-dev * * Building happens by running in your EGroupware directory: * * grunt # runs cssmin for all targets with changed files * or * grunt [newer:]cssmin:<target> # targets: pixelegg, jdots * * Please use only double quotes, as we parse this file as json to update it! * * @param {object} grunt */ module.exports = function (grunt) { grunt.initConfig({ cssmin: { options: { shorthandCompacting: false, sourceMap: true, rebase: true }, pixelegg: { files: { "pixelegg/css/pixelegg.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "pixelegg/css/pixelegg.css", "api/templates/default/print.css", "pixelegg/print.css" ], "pixelegg/css/mobile.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "pixelegg/css/mobile.css", "api/templates/default/print.css", "pixelegg/print.css" ], "pixelegg/mobile/fw_mobile.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/etemplate/lib/jsdifflib/diffview.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/etemplate2.css", "pixelegg/mobile/fw_mobile.css", "api/templates/default/print.css", "pixelegg/print.css" ], "pixelegg/css/monochrome.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "pixelegg/css/monochrome.css", "api/templates/default/print.css", "pixelegg/print.css" ], "pixelegg/css/modern.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "pixelegg/css/pixelegg.css", "api/templates/default/print.css", "pixelegg/print.css" ] } }, jdots: { files: { "jdots/css/high-contrast.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "api/templates/default/default.css", "jdots/egw_fw.css", "jdots/css/jdots.css", "jdots/css/high-contrast.css", "api/templates/default/print.css", "jdots/print.css" ], "jdots/css/jdots.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "api/templates/default/default.css", "jdots/egw_fw.css", "jdots/css/jdots.css", "api/templates/default/print.css", "jdots/print.css" ], "jdots/css/orange-green.min.css": [ "node_modules/flatpickr/dist/themes/light.css", "api/js/jquery/chosen/chosen.css", "api/js/jquery/jquery-ui/themes/themes/redmond/jquery-ui.css", "vendor/egroupware/magicsuggest/magicsuggest.css", "api/js/jquery/blueimp/css/blueimp-gallery.min.css", "api/js/dhtmlxtree/codebase/dhtmlxtree.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "vendor/bower-asset/diff2html/dist/diff2html.css", "vendor/bower-asset/cropper/dist/cropper.min.css", "api/templates/default/css/flags.css", "api/templates/default/css/htmlarea.css", "api/templates/default/def_tutorials.css", "api/templates/default/etemplate2.css", "api/templates/default/default.css", "jdots/egw_fw.css", "jdots/css/jdots.css", "jdots/css/orange-green.css", "api/templates/default/print.css", "jdots/print.css" ] } } }, hub: { all: { src: [ "*/Gruntfile.js" ] } } }); // Load plugin for css minificaton grunt.loadNpmTasks("grunt-contrib-cssmin"); // Load the plugin that runs tasks only on modified files //grunt.loadNpmTasks("grunt-newer"); // uncomment to run Gruntfile.js in apps / sub-directories //grunt.loadNpmTasks('grunt-hub'); // Default task(s). grunt.registerTask("default", ["cssmin"]);//, 'hub']); };