将本地模块构建为电子应用程序的一部分

问题描述

我目前正在使用电子,反应,打字稿和NodeJS本机模块构建应用程序。我使用提供的样板代码https://github.com/electron-react-boilerplate/electron-react-boilerplate)启动了应用程序。

我希望向应用程序中添加一些本机模块,最好将其编写为应用程序中的库。目前,我已经编写了一个C ++模块来读取一些内存统计信息。通过以如下方式导入模块,我可以使模块在开发模式下运行时正常工作:const native = require('./lib/memmonitor/build/Release/memmonitor.node');'

我遇到的第一个问题是需要通过进入导向器并手动运行electron-rebuild来手动构建该模块。理想情况下,这应通过运行yarn installyarn electron-rebuild(均在样板package.json中定义)来触发;但是这些命令似乎只关心通过node_modules包含的本机模块。

我遇到的第二个问题是,在打包应用程序时,节点模块未包含在最终版本中,导致电子应用程序由于找不到节点模块而无法启动。

是否有可能在应用程序构建中构建本机模块,并将其包含在最终包中?或者,对于每个自定义本机模块而言,是否有单独的存储库是标准的?是否有应用程序将库包含为依赖项? ?

解决方法

因此,在几周断断续续地试图弄清楚如何完成这项工作之后,事实证明答案是使用yarn的oneliner。

“技巧”是使用yarn add link:../path/to/native/module将模块添加为项目的依赖项。这样您就可以将有关模块的信息告诉yarn / webpack / electron-builder,这些工具将正确处理模块的构建。