Есть ли быстрый инструмент, который выполняет константную подстановку без удаления комментариев в исходном коде JavaScript? - PullRequest
2 голосов
/ 21 декабря 2011

Например, установка MYCONST = true приведет к преобразованию

 if (MYCONST) {
     console.log('MYCONST IS TRUE!'); // print important message
 }

в

 if (true) {
     console.log('MYCONST IS TRUE!'); // print important message
 }

Этот инструмент в идеале имеет быстрый доступный API-интерфейс node.js.

Ответы [ 5 ]

3 голосов
/ 30 декабря 2011

Лучший способ достичь того, что вы хотите -

Settings.js

 settings = {
   MYCONST = true
 };

MainCode.js

 if (settings.MYCONST) {
     console.log('MYCONST IS TRUE!'); // print important message
 }

Таким образом, вы вносите изменения в один файл.

2 голосов
/ 29 декабря 2011

компилятор google закрывает, помимо прочего, вставку констант при аннотировании как таковых, оставляя строковое содержимое нетронутым , но я не уверен, подходит ли вам этот вариант.

1 голос
/ 31 декабря 2011

Патч beautifier, например

  • Получите JS Beautifier https://raw.github.com/einars/js-beautify/master/beautify.js, написанный на JS.
  • Замените последнюю строку function print_token() начто-то вроде

    output.push (token_text == "MYCONST"? "true": token_text);

  • Вызов js_beautify(your_code) изнутри nodejs.
0 голосов
/ 27 декабря 2011

Редактировать : Упс.Надо сначала прочитать заголовок.Игнорируйте меня.

Компилятор Google Closure имеет такую ​​функцию:

Вы можете объединить тег @ define в своем коде с --defineпараметр для изменения переменных во время «компиляции».

Компилятор замыкания также удалит ваш оператор if, который, вероятно, вам нужен.

Просто напишите ваш код следующим образом:

/** @define {boolean} */
var MYCONST = false; // default value is necessary here

if (MYCONST) {
    console.log('MYCONST IS TRUE!'); // print important message
}

И вызовите компиляторс параметром:

java -jar closure-compiler.jar --define=MYCONST=true --js pathto/file.js

Относительно вашего запроса API: Компилятор Closure имеет JSON API .

0 голосов
/ 21 декабря 2011

Система сборки Apache Ant поддерживает задачу замены , которую можно использовать для достижения этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...