Как объединить и минимизировать несколько файлов CSS и JavaScript с помощью Grunt.js (0.3.x)

Примечание. Этот вопрос относится только к Grunt 0.3.x и оставлен для справки. Для получения справки о последней версии Grunt 1.x, пожалуйста, смотрите мой комментарий под этим вопросом.

В настоящее время я пытаюсь использовать Grunt.js для настройки процесса автоматической сборки для первой конкатенации, а затем минимизации файлов CSS и JavaScript.

Мне удалось успешно объединить и минимизировать мои файлы JavaScript, хотя каждый раз, когда я запускаю grunt, кажется, что он просто добавляется к файлу, а не перезаписывает их.

Что касается минимизации или даже конкатенации CSS, я пока не могу этого сделать!

С точки зрения ворчливых модулей CSS, которые я пытался использоватьconsolidate-css, grunt-css & cssmin но безрезультатно. Не могу понять, как их использовать!

Моя структура каталогов выглядит следующим образом (являясь типичным приложением node.js):

app.jsgrunt.js/public/index.html/ public / css / [различные файлы css]/ public / js / [различные файлы javascript]

Вот как выглядит мой файл grunt.js в корневой папке моего приложения:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: '<json:package.json>',
    concat: {
      dist: {
        src: 'public/js/*.js',
        dest: 'public/js/concat.js'
      }
    },
    min: {
      dist: {
        src: 'public/js/concat.js',
        dest: 'public/js/concat.min.js'
      }
    },
    jshint: {
      options: {
        curly: true,
        eqeqeq: true,
        immed: true,
        latedef: true,
        newcap: true,
        noarg: true,
        sub: true,
        undef: true,
        boss: true,
        eqnull: true,
        node: true
      },
      globals: {
        exports: true,
        module: false
      }
    },
    uglify: {}
  });

  // Default task.
  grunt.registerTask('default', 'concat min');

};

Так что просто для подведения итогов мне нужна помощь с двумя вопросами:

Как объединить и свернуть все мои CSS-файлы в папке/public/css/ в один файл, скажемmain.min.cssПочему grunt.js продолжает добавлять к объединенным и уменьшенным файлам javascriptconcat.js а такжеconcat.min.js под/public/js/ вместо того, чтобы перезаписывать их каждый раз, когда командаgrunt это бег?

Обновлено 5 июля 2016 г. - Обновление с Grunt 0.3.x до Grunt 0.4.x или 1.x

Grunt.js переехал в новую структуру вGrunt 0.4.x (файл теперь называетсяGruntfile.js). Пожалуйста, смотрите мой проект с открытым исходным кодомGrunt.js Скелет за помощь в настройке процесса сборки дляGrunt 1.x.

Переезд изGrunt 0.4.x вGrunt 1.x не следует вводить много серьезных изменений.

Ответы на вопрос(5)

Ваш ответ на вопрос