Оптимизатор r.js - не коверкайте имена функций

Я использую r.js с uglify для минимизации и объединения моих скриптов. Я получаю некоторые ошибки на рабочем сайте, где возвращаемая трассировка стека непонятна. Я хотел бы временно отключить изменение имен функций (имена переменных в порядке), и у меня возникли проблемы с тем, как это сделать, поскольку r.js упаковывает параметры конфигурации, которые передаются в uglify.js

Раздел конфигурации uglify в моей конфигурации сборки r, js выглядит следующим образом

uglify: {
      beautify: true,
      indent_start: 0,
      indent_level: 1,
   }

Я хотел бы добавить

-nmf или --no-mangle-functions — если вы хотите изменить имена переменных, но не трогать имена функций. (отсюда)

Если я добавлю строку

uglify: {
      beautify: true,
      indent_start: 0,
      indent_level: 1,
      '--no-mangle-functions': true
   }

Он ничего не делает, как и 'no-mangle-functions': true.

Как мне передать эту опцию для уродства?


person Aran Mulholland    schedule 08.06.2014    source источник
comment
вы видели пример файла конфигурации на их веб-странице: github .com/jrburke/r.js/blob/master/build/example.build.js ? Существует эта опция no_mangle: true и опция mangle : false для r.js версии 2.   -  person pfried    schedule 10.06.2014
comment
Да, но эта опция разрешает только изменение или нет, она не дает вам доступа к полным параметрам изменения (я хочу изменить имена переменных, но не имена функций)   -  person Aran Mulholland    schedule 10.06.2014


Ответы (2)


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

Для создания исходных карт в Uglify просто добавьте эти параметры:

uglify: {
    options: {
        sourceMap: 'build.min.map',
        sourceMappingURL: 'build.min.map'
    }
}

Имя файла карты должно отражать окончательное имя файла javascript:

uglified.js <=> uglified.map
person Ingmars    schedule 16.06.2014
comment
Абсолютно правильный подход; однако я обнаружил, что у меня проблемы с отладчиками в Chrome и Firefox с исходными картами, поэтому у меня возникает соблазн использовать mangle: false, как было предложено @pfried выше (моя проблема воспроизводится только в моей промежуточной и производственной среде, а не в Дев). - person outis nihil; 22.01.2015

Из того, что я вижу в исходном коде r.js, нет прямого различия между функциями и именами переменных. Но есть параметр no_functions, который фактически передается в раздел uglify, где значение по умолчанию равно false.

Прохождение опций:

https://github.com/jrburke/r.js/blob/master/dist/r.js#L25067

По умолчанию no_functionsto false:

https://github.com/jrburke/r.js/blob/master/dist/r.js#L11492

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

person pfried    schedule 10.06.2014