2015-12-01 2 views
1

Я запускаю приложение Angular.js, и все управление задачами выполняется с grunt, пока у меня есть три компонента, которые я просматриваю в режиме живой перезагрузки, bower_components, счета-фактуры и пользователей, в конце концов, они будут увеличиваться в количестве, поэтому я хотел бы знать, есть ли способ вызвать внешний файл, такой как components.json, и перебрать его через n членов. Вот мой код:Конфигурация задачи Grunt server из внешних файлов

// The grunt server settings 
connect: { 
    options: { 
     port: 9000, 
     hostname: 'localhost', 
     livereload: 35729 
    }, 
    livereload: { 
     options: { 
      open: true, 
      middleware: function (connect) { 
       return [ 
        connect.static('.tmp'), 
        connect().use(
         '/bower_components', 
         connect.static('./bower_components') 
        ), 
        connect().use(
         '/invoices', 
         connect.static(invoicesAppPathConfig.root) 
        ), 
        connect().use(
         '/users', 
         connect.static(usersAppPathConfig.root) 
        ), 
        connect.static(secureAppPathConfig.app) 
       ]; 
      } 
     } 
    }, 
    dist: { 
     options: { 
      open: true, 
      base: '<%= main.dist %>' 
     } 
    } 
} 

Я уже создал файл component.json:

{"data":[ 
    { 
     "resource":"/bower_components", 
     "config":"./bower_components" 
    }, 
    { 
     "resource":"/invoices", 
     "config":"invoicesAppPathConfig.root" 
    }, 
    { 
     "resource":"/users", 
     "config":"usersAppPathConfig.root" 
    } 
]} 

И в Gruntfile.js я создал это переменные, имея в виду, что мне нужно перебирать в содержание данных:

var components = require('./components.json'); 
var data = components.data; 

Теперь у меня вопрос, как я могу это сделать в коде?

middleware: function (connect) { 
    return [ 
     connect.static('.tmp'), 
     // Here comes the data iteration 
     connect.static(secureAppPathConfig.app) 
    ]; 
} 

Заранее спасибо.

ответ

0

Создать следующие переменные:

var components = require('./components.json'); 
var data = components.data; 
var arrayComponents = []; 

Тогда в т он варианты LiveReload перебора данных JSON и добавить его в arrayComponents:

middleware: function (connect){ 
    arrayComponents.push(connect.static('.tmp')); 
    // The modules to be watched are added 
    for(var i in data){ 
     arrayComponents.push(connect().use(data[i].resource, connect.static(data[i].config))); 
    } 
    arrayComponents.push(connect.static(secureAppPathConfig.app)); 
    return arrayComponents; 
} 

Он работает, но, возможно, это не самое элегантное решение.

1

Конечно, вы можете:

grunt.initConfig({ 
    components: grunt.file.readJSON('components.json'), 
    [...] 
}); 

Больше info on grunt.file here

Вы также можете потребовать его:

var components = require('./components.json'); 
+0

Итак, что вам нужно конкретно? –

+0

Я обновил вопрос, спасибо. – AndreFontaine

+0

Просто требуйте его, как и в файле grunt –

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