如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

作为苏南大叔推荐大家使用的electron打包工具,electron-packager的命令行模式,还是非常好用的。在本篇文字中,苏南大叔将要和大家分享的是:electron-packager的两个参数,--extra-resource--ignore。把这两个参数单独拿出来进行讨论的原因,还要从electron-packager--asar参数说起。

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

前言

大家都知道:electron的世界里面,有个asar的打包概念。体现在electron-packager上的话,就是--asar

electron-packager ./ --asar

asar可以把源码打包到一个文件里面,进而获得一定的代码加密和整合的效果。但是,默认情况下,这个asar里面的文件,是无差别的打包的。会把一些无用的文件打包进去,甚至一些额外的第三方程序。对于后者,第三方程序打包到asar之后,虽然代码逻辑层面还行得通。但是执行效果上,却报错了,无法找到这些第三方程序。具体的症状就是:开发的时候,一切正常。一旦打包(打包成asar),就报错了。

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

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

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

extra-resourceignore

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

  • ignore ,在将默认打包的范围内,排除掉一些不打包进去的。例如第三方资源文件,是无论如何,都不能打包到asar里面的。打包进去的话,或者没有用,占体积。或者影响程序逻辑实现,不能访问到这些第三方资源。
  • extra-resource,可以将第三方资源,在打包的时候,复制到app.asar的同级目录。

这两个参数的组合效果就是:把第三方资源文件,提升一个目录层级,从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,而设置了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 如何正确处理第三方资源的打包问题 - 同时操作多个目录
electron-packager 如何正确处理第三方资源的打包问题(图6-6)

相关内容

总结

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

另外,通过这种方式打包的代码,对于第三方资源的调用时传递的路径,需要区分处理。因为调试时和打包成asar的时候,资源的位置已经发生了较大变化,具体的如何区别处理,请参照苏南大叔的后续文字。

更多苏南大叔带来的electron系列教程,请参照如下链接。https://newsn.net/tag/electron/

 【electron】秘籍文章入口,仅传授于有缘之人   electron    asar

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!