Подтвердить что ты не робот

Динамическое отображение адресатов в grunt.js

У меня есть проект с несколькими подпапками, которые содержат файлы JavaScript, которые я хочу объединить. Каким будет правильный способ их настройки?

например.

source:/modules/$modulename/js/*.js(несколько файлов) dest:/modules/$modulename/js/compiled.js

Так что я хочу сделать, это собрать js файлы неизвестного/неконфигурированного подсчета подпапок ($ modulename) в один файл на каждую подпапку.

Возможно ли это?


Следующая функция (построенная после следующих команд здесь78) выполняет задание:

grunt.registerTask('preparemodulejs', 'iterates over all module directories and compiles modules js files', function() {

    // read all subdirectories from your modules folder
    grunt.file.expand('./modules/*').forEach(function(dir){

        // get the current concat config
        var concat = grunt.config.get('concat') || {};

        // set the config for this modulename-directory
        concat[dir] = {
            src: [dir + '/js/*.js', '!' + dir + '/js/compiled.js'],
            dest: dir + '/js/compiled.js'
        };

        // save the new concat config
        grunt.config.set('concat', concat);

    });

});

после этого я помещаю readymodulejs перед выполнением concat в моей конфигурации по умолчанию.

4b9b3361

Ответ 1

вам, вероятно, понадобится скопировать вашу собственную задачу, где вы будете перебирать свои подпапки и динамически присоединяться к вашей конфигурации concat.

grunt.registerTask("your-task-name", "your description", function() {

  // read all subdirectories from your modules folder
  grunt.file.expand("./modules/*").forEach(function (dir) {

    // get the current concat config
    var concat = grunt.config.get('concat') || {};

    // set the config for this modulename-directory
    concat[dir] = {
     src: ['/modules/' + dir + '/js/*.js', '!/modules/' + dir + '/js/compiled.js'],
     dest: '/modules/' + dir + '/js/compiled.js'
    };

    // save the new concat configuration
    grunt.config.set('concat', concat);
  });
  // when finished run the concatinations
  grunt.task.run('concat');
});

запустите это с помощью

$ grunt your-task-name

этот код не проверен, но я думаю, что он должен выполнять вашу работу.

СОВЕТ: вы можете поместить этот код во внешний файл и включить в свой файл grunt, если хотите сохранить свой файл grunt small, например. поместите это в файл внутри каталога задач:

module.exports = function(grunt) {
  grunt.registerTask("your-task-name", "your description", function() {
    ...
  });
};

и загрузите в свой файл grunt:

grunt.loadTasks("./tasks");