2

私はこの関数を、呼び出しの親呼び出し元と呼び出し元に渡された引数とともに、本当にひどくトレースする必要があるオブジェクトに持っています。

これは縮小されるまでうまく機能します:

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]

関数の宣言と代入を作成したくありません。それらが大量にあるからです (このコードを 7,564 で継承しました...そして、関数式に名前を付ける正規表現サブルーチンを簡単に実行できます)。

ミニファイヤがこれらの関数名を削除しないようにするにはどうすればよいですか?

4

1 に答える 1

2

これを実現するには、たとえば UglifyJS で特定の名前を渡して、マングルされないようにすることができます。

これを回避するには、 --reserved-file を使用して、マングリングから除外する名前を含むファイル名を渡すことができます

そのファイルには、次のように変更したくない名前のリストがあります。

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

Uglify Mangle オプション ドキュメント...

于 2016-04-26T18:43:44.503 に答える