【发布时间】:2015-02-20 06:00:40
【问题描述】:
我在 nodejs 中有一个应用程序。在其中,我定义了一些在多个文件之间共享的全局变量。例如:
//common.js
async = requires("async");
isAuthenticated = function() {
//...
return false;
};
//run.js
require("common.js");
async.series([function () {
isAuthenicated();
}], function () {
console.log("done");
});
我希望缩小 async 和 isAuthenticated 变量,但在所有文件中都缩小为相同的值。如下所示:
//common.min.js
a = requires("async");
b = function() {
//...
return false;
};
//run.min.js
require("common.js");
a.series([function () {
b();
}], function () {
console.log("done");
});
在uglifyjs中怎么做?
我目前正在遍历文件并在每个文件上使用命令 uglifyjs $file -m "sort,toplevel" -c > $file.min。
【问题讨论】:
-
在多个文件之间共享全局范围是一种反模式,更不用说您所说的只是节省 字节。
-
你为什么需要这个?
-
丑化只会使逆向工程(当然还有调试)变得更加困难,但并非不可能。
-
我的情况是提供代码而不是提供网络服务。当然,我知道没有任何东西可以完全阻止任何语言的逆向工程。在 JavaScript 世界中,我知道实现它的可能方法是丑化代码。否则,如果您需要交付代码,如何保护您的代码。至于测试,丑化代码中我就不做调试了。在我的构建过程中,我会先测试原始代码,然后再进行丑化。
-
如果您想保护您的代码,请使用编译语言编写并提供二进制文件。
标签: javascript node.js uglifyjs2