javascriptjquery-pluginsmicrosoft-ajax-minifier

Microsoft Ajax Minifier Renames My Function Names


I am using a jQuery plugin and running it through the Microsoft Ajax Minifier. My scripts work well for me, but now I am running into an issue with this plugin. The issue is that the plugin calls a function by its name using a string:

var s = (getCachedSortType(table.config.parsers, c) == "text") ? ((order == 0) ? "sortText" : "sortTextDesc") : ((order == 0) ? "sortNumeric" : "sortNumericDesc");

Note the "sortNumeric" and "sortNumericDesc". This calls these functions:

function sortNumeric(a, b) {
            return a - b;
        }

function sortNumericDesc(a, b) {
            return b - a;
        }

This is the only location these functions are called so the IDE VS2010 doesn't think that the functions are being called from anywhere... They are conditionally via the code above.

**Here is the Problem**

When this gets minified, the string name of the function stays, but the function gets removed because it does not thing its getting referenced.

Is there any way to adjust the settings minifier to not do this?

I have also seen it change the names of the functions so

function testFunctionName(a,b)

Would become

function a

This would also cause a problem for situations like mine... Please note, that I know it is bad code design to hard code function names like this. Like I said it is a plug-in that I am using. I would accept a solution that would call the function out right instead of by string, but I am always hesitant to modify plug-ins.


Solution

  • Use -unused:keep switch to retain unused functions. This, naturally, will prevent minifier from removing really unused code.

    Use -rename switch to assign permanent names to functions that you call by name.