Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在以前的损坏的基础上用丑陋的方式损坏功能_Javascript_Obfuscation_Uglifyjs_Grunt Contrib Uglify - Fatal编程技术网

Javascript 如何在以前的损坏的基础上用丑陋的方式损坏功能

Javascript 如何在以前的损坏的基础上用丑陋的方式损坏功能,javascript,obfuscation,uglifyjs,grunt-contrib-uglify,Javascript,Obfuscation,Uglifyjs,Grunt Contrib Uglify,我有一个js库,发布时必须对其进行模糊处理。但是,该库支持用户编写的插件。插件也必须进行模糊处理,但方式完全相同,以便它们与库一起工作 换言之: MyLibrary.js,其中包含 class1.function1() 变成 a.b() 稍后,用户会编写一个插件来调用该函数 plugin(function(){ ... class1.function1() ... }) 我必须能够将映射'class1'=>a'和'function1'=>b'的信息传递到Uglify的mangle选项

我有一个js库,发布时必须对其进行模糊处理。但是,该库支持用户编写的插件。插件也必须进行模糊处理,但方式完全相同,以便它们与库一起工作

换言之: MyLibrary.js,其中包含

class1.function1()
变成

a.b()
稍后,用户会编写一个插件来调用该函数

plugin(function(){
...
   class1.function1()
...
})
我必须能够将映射'class1'=>a'和'function1'=>b'的信息传递到Uglify的mangle选项,以将新代码更改为

plugin(function(){
...
   a.b()
...
})
这有可能吗?我猜想,这里的关键是Uglify在操作结束时输出模糊映射,以便以后可以再次使用

注意:当然,可以不混淆某些函数,但编写插件的用户将有权访问不公开的特权文档,因此他们的代码也必须混淆

编辑:

进一步说明:该项目在运行时使用ajax(根据需要)加载插件,并允许对方法调用进行json编码,因此可以使用dom元素对操作或事件进行编码。因此,无论建议采用何种方法,都必须包含一个中间符号转换映射,该映射将在以后执行。

公共API混淆?真的吗?这更像是第三方API模糊处理,我认为这本身就是一个有趣的概念。据我所知,rollup.js正在生成平面输出,也许它会更模糊。rollup.js是一个有用的工具。我会考虑更广泛地使用它。但是,它假设所有代码都是一起生成的。我遇到的问题是如何跨构建进行一致的模糊处理。我做了一个编辑来澄清。