打包和解包要修补的 Electron Native 应用程序的 node_modules
Posted
技术标签:
【中文标题】打包和解包要修补的 Electron Native 应用程序的 node_modules【英文标题】:Pack & unpack node_modules of an Electron Native application to be patched 【发布时间】:2021-01-09 14:35:03 【问题描述】:首先,我正在使用 electron-builder、npm 和 npx 生成一个电子本机应用程序。 正在执行下一个命令/步骤以编译和生成电子本机应用程序:
-
npm run build -- --prod --build-optimizer(编译应用)
npx electron-builder build --windows(生成电子窗口应用)
后来,我获得了一个myApp
文件夹,其中包含:
/win-unpacked
electron-builder-effective-config.yaml
myApp.exe
我的应用程序使用 node_modules
文件夹,其中包含我的应用程序中使用的所有节点依赖项。
我的问题是:有什么方法可以解压原生应用程序或类似应用程序并修补 node_modules
中的新更改?
在进行调查后,我发现节点依赖项打包在系统缓存中的 app.asar
文件中,该文件包含一个 dist
文件夹和一些 .js
文件。
在开发者工具中:
内部app.asar
:
有没有办法“部署”节点模块文件夹,目的是执行每个包的补丁操作并更改节点模块文件夹内的代码?
我将不胜感激。
【问题讨论】:
【参考方案1】:Asar 是只读存档格式,因此您无法修补存档中的任何文件。
但是您可以做的是禁用 build
配置中的 asar 选项。
所以在你的package.json
中这样定义它:
"build":
"appid": "........",
"win": ........,
"asar": false
如果你构建了这个,就没有 asar 存档了,你可以覆盖任何文件...
您还可以通过编程方式使用 asar。因此,您可以解压缩 asar 存档、更新文件和打包新存档。查看here如何使用它
【讨论】:
【参考方案2】:与这里所说的相反,修补 .asar 存档是完全可能的。我在 NPM 上发布了一个名为 patch-asar 的库,专门用于此目的。
【讨论】:
你不能修补 asar 文件....你所做的是解压一个 asar 文件并创建一个新的....这不是修补一个 asar 文件。以上是关于打包和解包要修补的 Electron Native 应用程序的 node_modules的主要内容,如果未能解决你的问题,请参考以下文章