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