2016-09-01 12 views
2

Резервный разработчик спрашивает об интерфейсе.Как объявить переменные профиля и интегрировать их в файлы JS? Как исключить/включить функцию для сборки?

У меня есть две функции, которые совершенно разные. Один из них - для производства, другой - для местного развития. Например, когда я нахожусь в режиме развития, ситуация выглядит следующим образом:

/* 
function f() { 
    // production logic 
} 
*/ 
function f() { 
    // development logic 
} 

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

Я действительно не хочу делать заявление if, где я проведу некоторую переменную (если значение равно "DEV", тогда ... еще ...). Функции слишком велики и содержат много несмежных частей.

Я много гулял, но ничего не нашел. Что-то вроде? Что-то вроде профилей с их переменными, которые могут быть интегрированы в JS-файлы? Или пометка функции с комментарием, который исключает/включает функцию из/в сборке, так как это possible with HTML.

Проект собирается Grunt.

+0

JS не «построен», так что не скомпилированы флаги. Если вы используете grunt, то, вероятно, не составит труда сделать скрипт grunt, который делает эквивалент. Кстати, обычно единственной разницей между dev и prod будут консольные журналы. Мне любопытно, почему у вас есть целые функции, которые отличаются друг от друга. – dlsso

+0

@dlsso. Этот модуль является лишь небольшой частью большого проекта, производственная версия функции управляет данными, которые появляются во время выполнения, для версии разработки, я должен создавать эти данные искусственно, чтобы увидеть полную картину. – Andrew

+0

@dlsso, Буду признателен, если вы предложите способ, которым я должен следовать, чтобы достичь этой цели. Может ли Grunt изменять файлы JS во время их слияния/угашения? – Andrew

ответ

1

Как @dlsso упоминались в комментариях, существует эффективный npm плагин grunt-dev-prod-switch для изменения исходных файлов в зависимости от выбранного вами режима.

Используется для переключения между предварительно определенными блоками блоками комментариев в файлах проект для изменения окружающей среды от разработки до производства и обратно.

После конфигурации, это позволяет мне сделать следующее:

/* env:prod */ 
function f() { ... } 
/* env:prod:end */ 

/* env:dev */ 
function f() { ... } 
/* env:dev:end */ 

Плагин определяет, какой режим/окружающая среда является включение (dev_prod_switch.options.environment), анализирует комментарии файлов (определяются в dev_prod_switch.all.files свойство) и портит (комментарий) все блоки не относятся к текущему режиму.

Например, режим производства включен:

/* env:dev *#/ 
function f() { ... } 
/* env:dev:end */