<commit_before>#Front-end BEEVA Best Practices   

##5.- Tools

### <img src="http://gruntjs.com/img/grunt-logo.png" height="80px"/> GRUNT 

*  [Introduction](#introduction)
* [Gruntfile](#gruntfile)
* [Pluggins](#pluggins)
* [Links](#links)
 
----
## <a name='introduction'>Introduction</a>

Grunt, the JavaScript Task Runner is implemented with NodeJS and used for configuration and implementation of automated tasks for:

   - <b>Improving Productivity</b>, speed up the development workflow.
   
   - <b>Enhancing the Performance</b>, optimizing each byte. 
 
   - <b>Increasing Quality</b>, through testing and documentation.
   
<br>
The Grunt ecosystem is huge and it's growing every day with hundreds of plugins to configure and automatize task with a minimum of effort for:

- Validation of the code (JS, CSS).

- Compression and Obfuscation of the code

- Execution of automated test.

- Management and installation of dependencies.

- Generation of project documentation

- And much more..
 
 


## <a name='gruntfile'>Gruntfile</a>

The configuration and execution of all tasks and pluggins is done in the configuration file <b>Gruntfile<b>.

```javascript
module.exports = function (grunt) {

  // NODE MODULES GRUNT TASK
  grunt.loadNpmTasks('grunt-karma');
  grunt.loadNpmTasks('grunt-ngdocs');
  grunt.loadNpmTasks('grunt-bower-install');


  // GRUNT TASKS
  require('load-grunt-tasks')(grunt);
  require('time-grunt')(grunt);

  // APPLICATION CONFIG PATHS
  var appConfig = {
    app: require('./bower.json').appPath || 'app',
    dist: 'dist'
  };

  // GRUNT CONFIGURATION & TASK DEFINITIONS
  grunt.initConfig({<commit_msg>FrontEnd > Tools > Grunt V.1<commit_after>#Front-end BEEVA Best Practices   

##5.- Tools

### <img src="http://gruntjs.com/img/grunt-logo.png" height="80px"/> GRUNT 

*  [Introduction](#introduction)
* [Gruntfile](#gruntfile)
* [Pluggins](#pluggins)
* [Links](#links)
 
----
## <a name='introduction'>Introduction</a>

Grunt, the JavaScript Task Runner is implemented with NodeJS and used for configuration and implementation of automated tasks for:

   - <b>Improving Productivity</b>, speed up the development workflow.
   
   - <b>Enhancing the Performance</b>, optimizing each byte. 
 
   - <b>Increasing Quality</b>, through testing and documentation.
   
<br>
The Grunt ecosystem is huge and it's growing every day with hundreds of plugins to configure and automatize task with a minimum of effort for:

- Validation of the code (JS, CSS).

- Compression and Obfuscation of the code

- Execution of automated test.

- Management and installation of dependencies.

- Generation of project documentation

- And much more..
 
 


## <a name='gruntfile'>Gruntfile</a>

The configuration and execution of all tasks and pluggins is done in the configuration file <b>Gruntfile</b>.

```javascript
module.exports = function (grunt) {

  // NODE MODULES GRUNT TASK
  grunt.loadNpmTasks('grunt-karma');
  grunt.loadNpmTasks('grunt-ngdocs');
  grunt.loadNpmTasks('grunt-bower-install');


  // GRUNT TASKS
  require('load-grunt-tasks')(grunt);
  require('time-grunt')(grunt);

  // APPLICATION CONFIG PATHS
  var appConfig = {
    app: require('./bower.json').appPath || 'app',
    dist: 'dist'
  };

  // GRUNT CONFIGURATION & TASK DEFINITIONS
  grunt.initConfig({
{'fraction_non_alphanumeric': 0.12583182093163944, 'fraction_numerical': 0.002117362371445856, 'mean_word_length': 3.980421686746988, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2873586', 'n_tokens_mistral': 1088, 'n_tokens_neox': 1033, 'n_words': 314}