2015-02-09 3 views
0

Мне нужно объединить набор файлов на основе переменных, которые я определил в свой пакет package.json.Создайте динамический массив для использования в grunt concat

// package.json 
... 

"layouts": [ 
    { 
     "page": "home", 
     "version": "a" 
    }, 
    { 
     "page": "about", 
     "version": "a" 
    }, 
    { 
     "page": "contact", 
     "version": "b" 
    } 
    ] 

... 

В ворчание я тогда строить их в массив JSON и насосное его в параметр src в моей хрюкать-CONCAT-вно задачи.

// gruntfile.js 
... 

var package = grunt.file.readJSON('package.json'), 
    targets = package.layouts, 
    paths = []; 

    for (var target = 0; target < targets.length; target++) { 
     paths.push("layouts/" + targets[target]['page'] + "/" + targets[target]['version'] + "/*.php"); 
    }; 

    var paths = JSON.stringify(paths); 

    grunt.log.write(paths); // Writing this to console for debugging 

    grunt.initConfig({ 
     concat: { 
      build: { 
       src: paths, 
       dest: 'mysite/Code.php', 
       options: { 
        separator: '?>\n\n' 
       } 
      } 
     } 
    }); 

... 

Моя проблема заключается в том, что переменная paths не работает внутри initConfig, когда он назначен JSON.stringify(paths).

Если я вручную ввешу массив как следующий, который я скопировал, откуда я зарегистрировал переменную paths на консоли, он работает!

var paths = ["layouts/home/a/*.php","layouts/about/a/*.php","layouts/contact/b/*.php"];

Что мне не хватает?

ответ

0

Derp. Я исправил его, мне не нужно было JSON.stringify() массива.

Заключительный рабочий gruntfile ниже:

// gruntfile.js 
... 

var package = grunt.file.readJSON('package.json'), 
    targets = package.layouts, 
    paths = []; 

for (var target = 0; target < targets.length; target++) { 
    paths.push("layouts/" + targets[target]['page'] + "/" + targets[target]['version'] + "/*.php"); 
}; 

grunt.initConfig({ 
    concat: { 
     build: { 
      src: paths, 
      dest: 'mysite/Code.php', 
      options: { 
       separator: '?>\n\n' 
      } 
     } 
    } 
}); 

... 

 Смежные вопросы

  • Нет связанных вопросов^_^