electron-packager处理第三方资源打包问题

本文转载自:https://newsn.net/

作为新人打包之后,必掉大坑之一。第三方资源的使用,总是出问题。比如:调用的第三方exe怎么找不到了啊?为啥注册表文件消失了啊?ffmpeg咋失效了啊?音乐视频为啥不能播放了啊?诸如此类的问题,很多。上述论点总是附带一个前提,那就是:"打包之后"。

那么,请问,打包的过程中,究竟发生了什么?您想过么?本文主要描述的是electron-packager如何正确处理第三方资源的打包问题,其它打包工具也是类似的。大家请仔细查看相关文档。

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 如何正确处理第三方资源的打包问题

electron-packager 如何正确处理第三方资源的打包问题(图6-2)

当然,在这里,苏南大叔还要特别说明几句,就是:打包,可不一定有asar包的出现的。但是,对于大多数小白来说,asar包的出现是必然的。一旦出现了asar包,试图调用里面的第三方程序或资源的时候,就一定会报错。换句话说:打包只要不打asar包,一般不会有大问题。打了asar包,就一定要特别注意第三方资源的路径问题。

electron-packager 如何正确处理第三方资源的打包问题

electron-packager 如何正确处理第三方资源的打包问题(图6-3)

extra-resourceignore

electron-packager使用了--asar参数的话,您就很可能需要这两个参数:ignoreextra-resource

这两个参数的组合效果就是:把第三方资源文件,提升一个目录层级,从app.asar的内部,提升到app.asar的同级。

electron-packager 如何正确处理第三方资源的打包问题

electron-packager 如何正确处理第三方资源的打包问题(图6-4)

如果仅仅设置extra-resource,而不设置ignore的话,app.asar里面就会有一份多余的resource文件。具体见下图。

electron-packager 如何正确处理第三方资源的打包问题

electron-packager 如何正确处理第三方资源的打包问题(图6-5)

比如在上述例子中,没有设置ignore,app.asar的大小是54.7M,而设置了ignoreapp.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 如何正确处理第三方资源的打包问题

electron-packager 如何正确处理第三方资源的打包问题(图6-6)

总结

本文中,苏南大叔向大家展示了:在electron-packager中,如何利用--ignore--extr-resource,处理asar和第三方资源的问题。当然,不光electron-packager,使用其他的打包工具,比如electron-builder也是一样的问题,但是处理方案的细节,是不同的。

另外,通过这种方式打包的代码,对于第三方资源的调用时传递的路径,需要区分处理。

以上是 electron-packager处理第三方资源打包问题 的全部内容, 来源链接: utcz.com/a/119230.html

回到顶部