2013-02-15 5 views
3

Я хочу создать какую-то задачу, где я могу читать пользовательские конфиги из разных json-файлов и заменять содержимое в моих файлах с кофейным источником содержимым json-файлов и конкатенировать исходные файлы ,Задача grunt с пользовательским настройкой json

мой Projekt-установки:

  • ./src

    • file1.coffee
    • file2.coffee
  • ./config

    • /папка1

      • development.json (содержит: { "ключ": "value1"}
      • production.json (содержит: { "ключ": "значение2"}
    • /folder2

      • development.json (содержит: { "ключ": "value3"}
      • production.json (содержит: { "ключ": «V alue4" }
  • ./dist

    • package-name.coffee
    • -пакетов name.js

file1.coffee содержит

myVar = '@@putkeyhere' 
version = '@@version' 
... 

У меня есть задача хрюкать CONCAT работает для себя настроен и работает:

concat: { 
    dist: { 
    src: ['<banner>', './src/*.coffee'], 
    dest: './dist/<%= pkg.name %>.coffee' 
    } 
}, 

я получил черновую замены задачи (замена версии и так далее уже работает, когда я запускаю «хрюкать заменить» на уже сцепленных файлов)

replace: { 
    dist: { 
    options: { 
     variables: { 
     'created': '<%= grunt.template.today("dd.mm.yyyy HH:MM:ss") %>', 
     'environment': 'dev', 
     'version': '<%= pkg.version %>' 
     }, 
     prefix: '@@' 
    }, 
    files: { 
     'dist/': ['./dist/<%= pkg.name %>.coffee'] 
    } 
    } 
}, 

и, наконец, кофе составить задачу:

coffee: { 
    compile: { 
    files: { 
     './dist/<%= pkg.name %>.js': ['./dist/*.coffee']   
    } 
    } 
} 

все задачи работают для себя, но мне нужно прочитать из файлов config-json, которые заменяют содержимое в конкатенированные файлы кофе, а затем скомпилировать все файлы в js.

я пытался что-то подобное, но не чувствует права:

grunt.registerTask('mytask', '', function (env) { 

    env = env || 'development'; 
    if (env !== 'development' && env !== 'production') { 
    grunt.log.error("'" + env + "' is not valid environment"); 
    return false; 
    } 

    var c = grunt.option('c'); 
    if(c) { 

    // if i run the task "grunt mytask:production -c folder2 it should read 
    // ./config/folder2/development.json 
    // that works that way, but i dont think this is a good solution 
    var config = grunt.file.readJSON('./config/' + c + '/' + env + '.json') 


    } else { 

    // here i need to iterate for all folders in ./config, and do stuff for all 
    } 

}); 

является Multitask вариант? но как читать динамически из файлов config.json?

оцените вашу помощь!

ответ