Как соединить файлы JS из заданной папки в 1 файл, используя GRUNT

190
01 октября 2018, 00:50

Как соединить файлы JS из заданной папки в 1 файл, используя GRUNT.

Пробовал:

  1. grunt-contrib-concat v1.0.1 - сливает все в 1 файл, но в том порядке в каком лежит в папке (возможно придется оставить, переименовав файлы для правильного порядка следования).
  2. grunt-import-js - почему то просто тупо копирует файлы в заданную папку (я видать не так суть данного модуля понял)

Подскажите модуль, который бы считывал из файла порядок следования объединяемых файлов и объединял их (если же вообще такой существует).

Answer 1

Нашел решение (спасибо моему коллеге Дмитрию за ссылку).

Значит структура файлов следующая: есть папка concat, в которой grunt берет папки-источники, по отдельности их собирает и кладет в заданное место. Так как модулей (директории в concat) может быть много и каждый раз прописывать в Gruntfile.js - это не очень замечательно, создается следующая задача:

grunt.registerTask("prepareConcat", "Finds and prepares modules for concatenation.", function() {
  // get all module directories
    grunt.file.expand("sys/src/js_concat/*").forEach(function (dir) {
      // get the module name from the directory name
      var dirName = dir.substr(dir.lastIndexOf('/')+1);
      // get the current concat object from initConfig
      var concat = grunt.config.get('concat') || {};
      // create a subtask for each module, find all src files
      // and combine into a single js file per module
      concat[dirName] = {
        src: [dir + '/**/*.js'],
        dest: 'sys/src/js/' + dirName + '/' + dirName + '.js'
      };
      // add module subtasks to the concat task in initConfig
      grunt.config.set('concat', concat);
    });
  });

И все, осталось добавить задачу для слежения и дефолтного исполнения:

watch: {
      ***
      scripts: {
        files: 'sys/src/js_concat/**/*.js',
        tasks: ['prepareConcat','concat']
      }
    }

и

grunt.registerTask('default', ['prepareConcat','concat', 'jshint', 'uglify', 'less']);

Ссылка на ответ-источник: https://stackoverflow.com/questions/21918202/using-grunt-to-concat-many-files-from-many-dirs-into-single-renamed-file-in-new?answertab=active#tab-top

READ ALSO
Не корректно работает цикл

Не корректно работает цикл

Нужно, чтобы по клику на кнопку запускалась функция, которая увеличивает каждый блок(первый через 500мс, второй через секунду и тд

198
Handlebars js register helper for object

Handlebars js register helper for object

Как в handlebarsjs зарегистрировать helper type object, чтобы его можно было использовать в шаблоне как {{ testfirst }} и {{ test

184
как запустить в одной функции два последовательных request запроса?

как запустить в одной функции два последовательных request запроса?

нужно последовательно запустить два request запроса(модуль в javascript), условия не асинхронно

187
Помогите чуть допилить скрипт

Помогите чуть допилить скрипт

Скрипт, чтоб при открытии одного попапа, другой попап закрывался (если он на тот момент открыт)Спасибо

157