我有一个 js 库,必须对其进行混淆才能发布。但是,该库支持可能由用户编写的插件。插件也必须经过混淆处理,但方式完全相同,以便它们与库一起使用。
换句话说:MyLibrary.js,其中包含
class1.function1()
更改为
a.b()
稍后,用户编写了一个调用该函数的插件
plugin(function(){
...
class1.function1()
...
})
我必须能够将地图 'class1' => 'a' 和 'funciton1' => 'b' 的信息传递给 Uglify 的 mangle 选项,以将新代码更改为
plugin(function(){
...
a.b()
...
})
这是可能吗?我怀疑这里的关键是 Uglify 在操作结束时输出混淆图,以便以后可以再次使用。
注意:当然,可以不混淆某些功能,但编写插件的用户将有权访问不公开的特权文档,因此他们的代码也必须被混淆。
编辑:
进一步澄清:该项目在运行时使用 ajax(根据需要)加载插件,并且它允许对方法调用进行 json 编码,以便可以使用 dom 元素对动作或事件进行编码。因此,无论建议什么方法,它都必须涉及一个稍后强制执行的中间符号转换映射。