Мой Справочник | CSS3 | Grunt

Установка
Grunt 1. Устанавливаем node.js для вашей ОС,
проверяем:
node -v

Также вместе с node должен установиться пакетный менеджер npm, проверяем: npm -v
2. Устанавливаем grunt cli (command line interface), обязательно нужны ПРАВА АДМИНИСТРАТОРА
В MAC OS и Linux пишем:

sudo npm install grunt-cli -g

В Windows запускаем консоль с правами админа и пишем:
npm install grunt-cli -g
3. Устанавливаем grunt: npm install grunt
проверяем: npm grunt -v
Официальный сайт Grunt

Все установки нужно производить в директории с проектом
Настройки проекта package.json npm init Будет создан файл package.json с информацией о проекте
Плагины
Компилятор less-кода в css
npm i -save-dev grunt-contrib-less

// Запуск плагина:
grunt less
     
less: {
  style: {
    files: {
      'css/style.css': 'sass/style.less'
    }
  }
},
Компилятор sass-кода в css
npm i -save-dev grunt-contrib-sass

// Запуск плагина:
grunt sass
sass: {
  style: {
    files: {
      'css/style.css': 'sass/style.scss'
    }
  }
},
      
Компилятор coffee-кода в js
npm i -save-dev grunt-contrib-coffee

// Запуск плагина:
grunt coffee
coffee: {
  // Выкл. обёртку при компиляции
  options: {bare: true},
  // Компиляция
  scripts: {
    expand: true,
    flatten: true,
    cwd: 'coffee/', // Исходная папка
    src: ['*.coffee'],//Разреш. файлов
    dest: 'js/',//Куда сохр. скомп. файлы
    ext: '.js' // Фомат сохранения файлов
  }
},
Мнгновенное сохранение изменений
npm i -save-dev grunt-contrib-watch

npm i -save-dev grunt-newer

// Запуск плагина:
grunt watch
     
watch: {
  // Перезагрузка страницы
  options: {liveReload: true},
  // Компиляция
  scripts: {
//Форматы и пути к файлам для наблюдения
    files: ['coffee/*.coffee'],
//Какую задачу запускать при изменении
    task: ['newer:coffee']
    //или task: ['process']
  }
},
//newer компил. только изменёный файл
Конкатинатор
npm i -save-dev grunt-contrib-concat

// Запуск плагина:
grunt concat
Склеевает все файлы в один
concat: {
// Форматы и пути к файлам для конкат.
  dist: {
// Где и какие файлы
    src: ['js/*.js'],
// Куда складывать
    dest: [dist/js/all.js]
  }
},
Минификатор js-кода
npm i -save-dev grunt-contrib-uglify

// Запуск плагина:
grunt uglify
uglify: {
// Форматы и пути к файлам для конкат.
  dist: {
//Комментарий перед мин. кодом
    options: {banner: ''},
//Какой файл минифицировать и куда сохр.
    files: {
'dist/js/all.min.js': ['dist/js/all.js']
    }
  }
},
Минификатор css-кода
npm i -save-dev grunt-contrib-cssmin

// Запуск плагина:
grunt cssmin
cssmin: {
  target: {
    files: [{
      expand: true,
      cwd: 'release/css',
      src: ['*.css', '!*.min.css'],
      dest: 'release/css',
      ext: '.min.css'
    }]
  }
}
      
Настройка
Настройки Gruntfile.js // 1. Присваиваем module.exports анонимную функцию, так пишутся все модули к node.js
module.exports = function(grunt) {
  ... Все настройки ЗДЕСЬ!
};

// 2. Прописываем основной конфиг initConfig и загружаем все нужные плагины loadNpmTasks
module.exports = function(grunt) {
  grunt.initConfig({
    ... Здесь настройки ПЛАГИНОВ!
  });

  grunt.loadNpmTasks('grunt-contrib-less');
  grunt.loadNpmTasks('grunt-contrib-coffee');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-newer');
  ...
  //Автоматизация:

  //Можно составлять свои задачи:
  grunt.registerTask('custom', function() {
    ...doSomething...
  });
  grunt.registerTask('process', [
    'newer:coffee',
    'concat',
    'uglify',
    'custom'
    ]
  );
  grunt.registerTask('default', [
    'coffee',
    'concat',
    'uglify',
    'watch'
    ]
  );
};

// 4. Запускаем автоматизацию: grunt
// будут работать дефолтные настройки
В нём будут содержаться таски(задачи) и конфиги для всех плагинов

Sample Gruntfile.js