0

У меня есть эта функция для объекта, который мне нужно проследить ДЕЙСТВИТЕЛЬНО БЕДЛИ, вместе с родительским вызывающим вызовом и аргументами, переданными вызывающему.Как предотвратить удаление JS-имен из имен имен-функций?

Это хорошо работает до уменьшенная:

var foo = { 
    FunctionToBeLogged: function GiveMeAName() { 
     console.log('> %s called from %s - args: %o', 
        arguments.callee.name, 
        arguments.callee.caller.name, 
        arguments.callee.caller.arguments); 
    } 
} 

var bar = { 
    A: function A(something) { 
    foo.FunctionToBeLogged('nothing', 12, true); 
    }, 
    B: function B(whatever, doesntMatter) { 
    foo.FunctionToBeLogged('nothing', 12, true); 
    } 
} 

bar.A(1.2, 'Fred', { }); // > GiveMeAName called from A - args: [1.2, "Fred", Object] 
bar.B('Barney', 42, false); // > GiveMeAName called from B - args: ["Barney", 42, false] 

минификация избавляется от этих имен и мой выход становится:

bar.A(1.2, 'Fred', { }); // > called from - args: [1.2, "Fred", Object] 
bar.B('Barney', 42, false); // > called from - args: ["Barney", 42, false] 

Я действительно не хочу, чтобы пойти и создать объявления функций и назначения, потому что у меня есть TONS из них (я унаследовал этот код с 7 564 ... и я могу легко запустить некоторое подмножество регулярных выражений, чтобы назвать выражения функций.)

Что я могу сделать, чтобы меридиан не избавился от моих имен этих функций?

+0

Запустить код unmunderified ....? Не разрабатывайте на производственных машинах и не минимизируйте на машинах разработки. – Ryan

+0

Hahaha .. извините, я забыл сказать: мы можем развернуть неограниченные скрипты вплоть до сред Dev и Integration, но нам нужно развернуть все сценарии JS, которые были минимизированы, начиная с нашей среды внутреннего QA и последующих этапов. Нам нужно отслеживать эти вызовы до Staging. – fernandoespinosa

+0

Что вы используете для минимизации кода? – JordanHendrix

ответ

1

Для достижения этой цели вы можете передать конкретные имена не могут быть подогнаны, например, в UglifyJS:

Чтобы избежать этого, вы можете использовать --reserved-файл, чтобы передать имя файла, которое должно содержать имена быть исключены из коверкая

в этом файле вы бы список имен вы не хотите быть изменено следующим образом:

{ 
    "vars": [ "define", "require", ... ], 
    "props": [ "length", "prototype", ... ] 
} 

Uglify Mangle options docs...

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