electron-packager处理第三方资源打包问题
本文转载自:https://newsn.net/
作为新人打包之后,必掉大坑之一。第三方资源的使用,总是出问题。比如:调用的第三方exe
怎么找不到了啊?为啥注册表文件消失了啊?ffmpeg
咋失效了啊?音乐视频为啥不能播放了啊?诸如此类的问题,很多。上述论点总是附带一个前提,那就是:"打包之后"。
那么,请问,打包的过程中,究竟发生了什么?您想过么?本文主要描述的是electron-packager
如何正确处理第三方资源的打包问题,其它打包工具也是类似的。大家请仔细查看相关文档。
electron-packager 如何正确处理第三方资源的打包问题(图6-1)
作为苏南大叔推荐大家使用的electron
打包工具,electron-packager
的命令行模式,还是非常好用的。在本篇文字中,苏南大叔将要和大家分享的是:electron-packager
的两个参数,--extra-resource
和 --ignore
。把这两个参数单独拿出来进行讨论的原因,还要从electron-packager
的--asar
参数说起。
前言
大家都知道:electron
的世界里面,有个asar
的打包概念。体现在electron-packager
上的话,就是--asar
:
electron-packager ./ --asar
asar
可以把源码打包到一个文件里面,进而获得一定的代码加密和整合的效果。但是,默认情况下,这个asar
里面的文件,是无差别的打包的。会把一些无用的文件打包进去,甚至一些额外的第三方程序。对于后者,第三方程序打包到asar
之后,虽然代码逻辑层面还行得通。但是执行效果上,却报错了,无法找到这些第三方程序。具体的症状就是:开发的时候,一切正常。一旦打包(打包成asar
),就报错了。
electron-packager 如何正确处理第三方资源的打包问题(图6-2)
当然,在这里,苏南大叔还要特别说明几句,就是:打包,可不一定有asar
包的出现的。但是,对于大多数小白来说,asar
包的出现是必然的。一旦出现了asar
包,试图调用里面的第三方程序或资源的时候,就一定会报错。换句话说:打包只要不打asar
包,一般不会有大问题。打了asar
包,就一定要特别注意第三方资源的路径问题。
electron-packager 如何正确处理第三方资源的打包问题(图6-3)
extra-resource
和 ignore
electron-packager
使用了--asar
参数的话,您就很可能需要这两个参数:ignore
和 extra-resource
。
这两个参数的组合效果就是:把第三方资源文件,提升一个目录层级,从app.asar
的内部,提升到app.asar
的同级。
electron-packager 如何正确处理第三方资源的打包问题(图6-4)
如果仅仅设置extra-resource
,而不设置ignore
的话,app.asar
里面就会有一份多余的resource
文件。具体见下图。
electron-packager 如何正确处理第三方资源的打包问题(图6-5)
比如在上述例子中,没有设置ignore
,app.asar的大小是54.7M
,而设置了ignore
,app.asar
的大小是6.7M
。这差额就是res
目录内的文件大小。所以,我们可以得出结论:ignore
参数的设置,还是非常有必要的。
参数的使用范例
下面的例子中,第三方资源都存在于项目根目录下面的res
文件夹中,我们希望把这个electron
打包,并使用asar
加密相关代码。
electron-packager ./ app --asar --ignore=res/ --extra-resource=res/
需要特别指明的是:如果要ignore
的目录或文件,是很多个的话,直接在命令行里面,叠加很多个--ignore=
即可。extra-resource
也是类似的用法,直接在命令行里面,叠加很多个--extra-resource=
即可。
electron-packager 如何正确处理第三方资源的打包问题(图6-6)
总结
本文中,苏南大叔向大家展示了:在electron-packager
中,如何利用--ignore
和--extr-resource
,处理asar
和第三方资源的问题。当然,不光electron-packager
,使用其他的打包工具,比如electron-builder
也是一样的问题,但是处理方案的细节,是不同的。
另外,通过这种方式打包的代码,对于第三方资源的调用时传递的路径,需要区分处理。
以上是 electron-packager处理第三方资源打包问题 的全部内容, 来源链接: utcz.com/a/119230.html