2015-04-16 2 views
3

У меня есть код HTML5 + JS, который строится Grunt. В настоящее время я создаю среду разработки и производства.Могу ли я передавать параметры с Grunt на Javascript?

Есть ли способ передать параметры из Grunt в JS-код? Таким образом, я мог бы передать IP-адрес сервера разработки/производства, в зависимости от того, какой я создаю.

Кстати, я заметил, что опция Grunt позволяет определять параметры Grunt (http://gruntjs.com/api/grunt.option), но как я могу использовать их в JS-коде?

Если есть хорошая практика для настройки двух сред для проекта JS, пожалуйста, дайте мне знать.

Спасибо!

+0

Было бы неплохо рассмотреть этот вопрос: http://stackoverflow.com/questions/12401998/have-grunt-generate-index-html-for-different-setups – kartikluke

ответ

0

Существует несколько плагинов, которые могут вам помочь.
Возьмем, например, includereplace.
npm install grunt-include-replace --save-dev

Вы должны определить переменные, которые вы хотите заменить внутри вашего файла Grunt.
Затем ссылку на файл, на который вы хотите запустить задачу.
Если вы хотите добавить значение через CLI, вы можете использовать API grunt.option, как вы предложили.

Gruntfile.js

module.exports = function(grunt) { 

    var ip = grunt.option('ip') || '127.0.0.1'; 

    grunt.initConfig({ 
    includereplace: { 
     dev: { 
     options: { 
      globals: { 
      ip: ip 
      }, 
     }, 
     src: 'file.js', 
     dest: 'dest/' 
     }, 
     prod: { 
     options: { 
      globals: { 
      ip: ip 
      }, 
     }, 
     src: 'file.js', 
     dest: 'dest/' 
     }  
    } 
    }); 

    grunt.loadNpmTasks('grunt-include-replace'); 

    grunt.registerTask('dev', ['includereplace:dev']); 
    grunt.registerTask('prod', ['includereplace:prod']); 

}; 

file.js

var ip = '@@ip'; 

Я отделил Дев и прод конфигурации, так что вы можете добавить различные переменные для каждой среды.

Запуск grunt prod --ip=XXX.XXX.XXX.XXX приведет к созданию нового файла в папке dest с новым значением.

Если вам не нравится соглашение о заполнителе @@, вы можете легко его изменить через API Custom Options.

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