在 Koffi 2.5.9 中简化
Koffi 使用本地模块来工作。NPM 包包含各种平台和架构的二进制文件,运行时会选择合适的模块。
请注意,Koffi 是为 Node.js(或 Electron)设计的,而不是为浏览器!在浏览器中无法加载本地库!
理论上,打包器/捆绑器应该能够找到所有本地模块,因为它们在 JavaScript 文件中明确列出(作为静态字符串),并且会以某种方式将它们打包。
如果做不到这一点,你可以手动将 node_modules/koffi/build/koffi 目录复制到你的捆绑脚本旁边。
以下是一个可以工作的示例:
在 Electron 中运行时,Koffi 还会尝试在 process.resourcesPath 中查找本地模块。对于一个 Electron 应用程序,你可以这样做:
新增于 Koffi 2.6.2
某些捆绑器(如 vite)不喜欢在本地模块中使用 require。
在这种情况下,你可以使用 require('koffi/indirect'),但你需要确保本地 Koffi 模块已正确打包。
使用 electron-builder 打包应该可以正常工作。
请查看仓库中的完整工作示例。
使用 Electron Forge 打包应该可以正常工作,即使在使用 webpack 时也是如此,这在你运行以下命令时已经配置好了:
请查看仓库中的完整工作示例。
像 nw-builder 这样的打包器应该可以正常工作。
你可以在仓库中找到一个完整的示例。
你可以轻松地使用复制加载器告诉 esbuild 复制本地文件,一切应该都能正常工作。可以使用类似以下的命令:
你可以在仓库中找到一个完整的示例。
使用 yao-pkg 为基于 Node.js 的项目创建二进制包。
你可以在仓库中找到一个完整的示例。