2014-09-16 2 views
2

Goodmornig,Grunt замена: параметрические JSon файл

Я использую хрюкать замены (https://github.com/outaTiME/grunt-replace) внутри моего gruntfile заменить некоторые строки в HTML-файл путем загрузки объекта JSON из файла JSON.

Я хочу, чтобы добавить некоторую гибкость в этом подходе и я настроен еще одну задачу под названием «setopts», что просто добавить некоторые свойства к grunt.option, что я использую я в поле «Заменить» задачу следующим образом:

replace: { 
    common: { 
     options: { 
     patterns: [ 
      { 
      json: '<%=grunt.option("locales")%>' 
      } 
     ] 
     }, 
     files: [ 
     {expand: true, flatten: true, src: ['public/sites/<%=grunt.option("domain")%>/index.html'], dest: 'public/sites/<%=grunt.option("domain")%>/'}, 
     ] 
    } 
}  

Вот моя задача 'setopts':

grunt.registerTask('setopts', function (domain) { 

    locales = grunt.file.readJSON('src/locales/domain/myfile.json'); 
    grunt.option('locales', locales); 

    grunt.option('domain', domain); 

} 

я запускаю следующую задачу:

grunt.registerTask('maintask', [ 'setopts:mydomain', 'replace:common']); 

После некоторых попыток я обнаружил, что свойство «files» в задаче «replace» работает нормально, но я получаю сообщение об ошибке в свойстве «pattern»:

Источник обработки ... ОШИБКА Предупреждение: ошибка при обработке «общедоступная» /sites/xxxxx/index.html ". Используйте -force для продолжения.

Что в этом плохого?

Спасибо за любые комментарии!

ответ

0

Я знаю, что я опоздал на 1,5 года, но, возможно, некоторым другим людям может понадобиться ответ на этот вопрос.

Способ, которым я работал, был не используя grunt.option. Вместо этого я использовал grunt.config.set.

replace: { 
    common: { 
     options: { 
     patterns: [ 
      { 
      json: '<%= locales %>' 
      } 
     ] 
     }, 
     files: [ 
     {expand: true, flatten: true, src: ['public/sites/<%= domain %>/index.html'], dest: 'public/sites/<%= domain %>/'}, 
     ] 
    } 
} 

Обратите внимание на способ переменная locales используется в качестве значения к json собственности.

Это setopts задача:

grunt.registerTask('setopts', function (domain) { 

    locales = grunt.file.readJSON('src/locales/domain/myfile.json'); 
    grunt.config.set('locales', locales); 

    grunt.config.set('domain', domain); 

} 

Надеется, что это помогает кто-то :)

Этот вопросу помог мне найти ответ Programmatically pass arguments to grunt task?

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