====== Grunt Manual ======
:!: Beginning with VuFind® 9.0, the use of Grunt is being phased out; it is strongly recommended that you begin using [[NPM|NPM Scripts]] instead.
[[http://gruntjs.com/|Grunt]] is a javascript and nodejs based task runner. It has been configured to run several tasks for front end manipulation and packaging. For more advanced methods, please see our [[development:grunt:scripts|community scripts page]].
To setup Grunt to run, first install node and run "npm install" to install all the dependencies in package.json.
===== Default =====
Just running "grunt" will perform the less and js compression tasks.
===== grunt less =====
Compiles all less files into a compressed css file. This script will detect themes inside of your themes directory and build the proper paths for you.
To use:
- grunt less
- adjust theme.config.php to point to new compressed file at themes/CUSTOM/css/compiled.css.
===== grunt scss =====
Compiles all sass files into a compressed css file. This script will detect themes inside of your themes directory and build the proper paths for you.
- grunt scss
- adjust theme.config.php to point to new compressed file at themes/CUSTOM/css/compiled.css.
===== grunt js =====
Compress vendor files in bootstrap3 into a single called "vendor.min.js".
Specifically, it creates a compressed file that includes jquery, bootstrap.js, then all vendor files except for bootstrap-slider.js (not compatible with "use strict" required for compression), and finally autocomplete.js.
To compress your own code: refer to the [[https://github.com/gruntjs/grunt-contrib-uglify|grunt-contrib-uglify documentation]] or base your subtask on vendor_min. You can run specific js compression subtasks like this:
grunt uglify:vendor_min
Don't forget to update your theme.config.php.
===== grunt eslint =====
Runs eslint style checks. By default, only does bootstrap3.
===== grunt lessToSass =====
Converts all less files to sass. Mostly for the VuFind® dev team. By default does bootstrap3 and bootprint3.