2012-12-15 46 views
0

我想编译基于Mootools库的JS代码的一部分。告诉Closure编译器不要重命名任何函数

我希望所有的变量都被重命名,但没有一个函数,被调用和定义的变量。因为大多数所谓的一个是从mootools的和定义的那些从外面叫:

代码进行编译:

// textnum is safe to be renamed, all variables are 
textnum = 0; 
// loadText can't be ranmed because is called from outside 
function loadText() 
{ 
    textnum++; 
    document.body.setStyle("font", "12px"); 
    // here setSyle can't be renamed 
} 

有没有办法来告诉它仅重命名瓦尔?

我发现这是一个开源项目,有没有办法操纵它,以至于它根本不触及功能!?

+0

我想一个接一个地宣布所有函数,因为externs不是一个选项? – rmobis

+0

From docs:decalre extern => function textDiv(text){};但是这个怎么样:body.textDiv(text){}它不能像那样工作。如果是这样,我必须为我拥有的每个元素定义它,而不仅仅是一次?!?! @Raphael_ – Ali

+0

声明'body'和'textDiv()'将为'body.textDiv()'扩展工作。是的,你必须为你想要保存的每个元素声明它。就个人经验而言,我之前尝试过Google Closure,与简单地缩小代码相比,它最终比提供任何真正的好处更麻烦。 – rmobis

回答

3

将代码编译到名称空间或匿名函数包装中,并使用简单的优化。这将重命名所有内部变量和函数,但不是全局变量,例如setStyle

不应重命名的函数在全局范围内定义。与定义实例和出口相比,这不是一个很大的麻烦。

+0

干得好,伙计。 – rmobis

+0

你真的不是在愚弄它 - 这正是简单优化的意图。 –

+0

@ChadKillingsworth我知道,我在开玩笑。 – Ali

相关问题