问题描述
我目前正在使用电子,反应,打字稿和NodeJS本机模块构建应用程序。我使用提供的样板代码(https://github.com/electron-react-boilerplate/electron-react-boilerplate)启动了应用程序。
我希望向应用程序中添加一些本机模块,最好将其编写为应用程序中的库。目前,我已经编写了一个C ++模块来读取一些内存统计信息。通过以如下方式导入模块,我可以使模块在开发模式下运行时正常工作:const native = require('./lib/memmonitor/build/Release/memmonitor.node');'
。
我遇到的第一个问题是需要通过进入导向器并手动运行electron-rebuild
来手动构建该模块。理想情况下,这应通过运行yarn install
或yarn electron-rebuild
(均在样板package.json中定义)来触发;但是这些命令似乎只关心通过node_modules包含的本机模块。
我遇到的第二个问题是,在打包应用程序时,节点模块未包含在最终版本中,导致电子应用程序由于找不到节点模块而无法启动。
是否有可能在应用程序构建中构建本机模块,并将其包含在最终包中?或者,对于每个自定义本机模块而言,是否有单独的存储库是标准的?是否有应用程序将库包含为依赖项? ?
解决方法
因此,在几周断断续续地试图弄清楚如何完成这项工作之后,事实证明答案是使用yarn
的oneliner。
“技巧”是使用yarn add link:../path/to/native/module
将模块添加为项目的依赖项。这样您就可以将有关模块的信息告诉yarn
/ webpack
/ electron-builder
,这些工具将正确处理模块的构建。