# grunt

***

**1. JavaScript Linting and Code Style Enforcement**

```javascript
const grunt = require('grunt');
grunt.initConfig({
  jshint: {
    all: ['src/**/*.js']
  }
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.registerTask('default', ['jshint']);
```

**2. CSS Linting and Optimization**

```javascript
grunt.initConfig({
  csslint: {
    all: ['style.css']
  },
  cssmin: {
    target: {
      files: {
        'dist/style.min.css': ['style.css']
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.registerTask('default', ['csslint', 'cssmin']);
```

**3. Image Optimization**

```javascript
grunt.initConfig({
  imagemin: {
    dynamic: {
      files: [{
        expand: true,
        cwd: 'images/',
        src: ['**/*.{png,jpg,gif}'],
        dest: 'dist/images/'
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.registerTask('default', ['imagemin']);
```

**4. JavaScript Unit Testing**

```javascript
grunt.initConfig({
  karma: {
    unit: {
      configFile: 'karma.conf.js'
    }
  }
});
grunt.loadNpmTasks('grunt-karma');
grunt.registerTask('test', ['karma:unit']);
```

**5. Browserify Bundling**

```javascript
grunt.initConfig({
  browserify: {
    dist: {
      files: {
        'bundle.js': ['app.js']
      }
    }
  }
});
grunt.loadNpmTasks('grunt-browserify');
grunt.registerTask('default', ['browserify']);
```

**6. Less Compilation**

```javascript
grunt.initConfig({
  less: {
    development: {
      options: {
        compress: true
      },
      files: {
        'style.css': 'style.less'
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.registerTask('default', ['less']);
```

**7. Sass Compilation**

```javascript
grunt.initConfig({
  sass: {
    dist: {
      files: {
        'style.css': 'style.scss'
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.registerTask('default', ['sass']);
```

**8. TypeScript Compilation**

```javascript
grunt.initConfig({
  typescript: {
    base: {
      src: ['**/*.ts'],
      dest: 'dist/',
      options: {
        module: 'commonjs',
        target: 'es5'
      }
    }
  }
});
grunt.loadNpmTasks('grunt-typescript');
grunt.registerTask('default', ['typescript']);
```

**9. CoffeeScript Compilation**

```javascript
grunt.initConfig({
  coffee: {
    compile: {
      files: {
        'app.js': 'app.coffee'
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-coffee');
grunt.registerTask('default', ['coffee']);
```

**10. Node.js Unit Testing**

```javascript
grunt.initConfig({
  mochaTest: {
    test: {
      options: {
        reporter: 'spec'
      },
      src: ['test/**/*.js']
    }
  }
});
grunt.loadNpmTasks('grunt-mocha-test');
grunt.registerTask('test', ['mochaTest']);
```

**11. Mocha Code Coverage**

```javascript
grunt.initConfig({
  karma: {
    unit: {
      configFile: 'karma.conf.js',
      coverageReporter: {
        type: 'html',
        dir: 'coverage/',
        subdir: '.'
      }
    }
  }
});
grunt.loadNpmTasks('grunt-karma');
grunt.registerTask('test', ['karma:unit']);
```

**12. ESLint Linting**

```javascript
grunt.initConfig({
  eslint: {
    all: ['src/**/*.js']
  }
});
grunt.loadNpmTasks('grunt-eslint');
grunt.registerTask('default', ['eslint']);
```

**13. Stylelint Linting**

```javascript
grunt.initConfig({
  stylelint: {
    all: ['style.css']
  }
});
grunt.loadNpmTasks('grunt-stylelint');
grunt.registerTask('default', ['stylelint']);
```

**14. Pug Template Compilation**

```javascript
grunt.initConfig({
  pug: {
    compile: {
      files: [{
        expand: true,
        cwd: 'templates/',
        src: ['**/*.pug'],
        dest: 'dist/',
        ext: '.html'
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-pug');
grunt.registerTask('default', ['pug']);
```

**15. Handlebar Template Compilation**

```javascript
grunt.initConfig({
  handlebars: {
    compile: {
      options: {
        namespace: 'JST'
      },
      files: {
        'dist/templates.js': ['templates/**/*.hbs']
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-handlebars');
grunt.registerTask('default', ['handlebars']);
```

**16. Vue.js Template Compilation**

```javascript
grunt.initConfig({
  vueToHtml: {
    dist: {
      files: [{
        expand: true,
        cwd: 'templates/',
        src: ['**/*.vue'],
        dest: 'dist/',
        ext: '.html'
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-vue-to-html');
grunt.registerTask('default', ['vueToHtml']);
```

**17. React.js Template Compilation**

```javascript
grunt.initConfig({
  react: {
    dynamic_templates: {
      files: [{
        expand: true,
        cwd: 'templates/',
        src: ['**/*.jsx'],
        dest: 'dist/',
        ext: '.js'
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-react');
grunt.registerTask('default', ['react']);
```

**18. Babel Transpilation**

```javascript
grunt.initConfig({
  babel: {
    dist: {
      files: [{
        expand: true,
        cwd: 'src/',
        src: ['**/*.js'],
        dest: 'dist/',
        ext: '.js'
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-babel');
grunt.registerTask('default', ['babel']);
```

**19. UglifyJS Code Minification**

```javascript
grunt.initConfig({
  uglify: {
    dist: {
      files: {
        'dist/app.min.js': ['src/app.js']
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['uglify']);
```

**20. Grunt-contrib-watch**

```javascript
grunt.initConfig({
  watch: {
    scripts: {
      files: ['src/**/*.js'],
      tasks: ['jshint', 'browserify']
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['watch']);
```

**21. Grunt-contrib-concat**

```javascript
grunt.initConfig({
  concat: {
    dist: {
      src: ['src/app1.js', 'src/app2.js'],
      dest: 'dist/app.js'
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['concat']);
```

**22. Grunt-contrib-clean**

```javascript
grunt.initConfig({
  clean: {
    dist: ['dist/*']
  }
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.registerTask('default', ['clean:dist']);
```

**23. Grunt-contrib-copy**

```javascript
grunt.initConfig({
  copy: {
    main: {
      files: [{
        expand: true,
        cwd: 'src/',
        src: ['**'],
        dest: 'dist/'
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', ['copy']);
```

**24. Grunt-contrib-connect**

```javascript
grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 9000,
        keepalive: true
      }
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.registerTask('default', ['connect:server']);
```

**25. Grunt-contrib-compress**

```javascript
grunt.initConfig({
  compress: {
    zip: {
      options: {
        archive: 'dist.zip'
      },
      files: [{
        expand: true,
        cwd: 'dist/',
        src: ['**'],
        dest: ''
      }]
    }
  }
});
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.registerTask('default', ['compress:zip']);
```
