在 npm 包中嵌入 Emscripten WebAssembly 模块



我正在构建一个 npm 包,其中包含一些从 Emscripten 模块"胶水代码"加载的 WebAssembly。

目前,WASM 是通过静态指定的 URL 从胶水代码中获取

// emscripten glue code
import rppgLoader from './set_asm.js';
async load() {
// load webassembly code
this.instance = rppgLoader({
locateFile(path) {
return `${process.env.PUBLIC_URL}/wasm/set_asm.wasm`;
}
});

此 URL 是特定于应用程序的,因此与 npm 模块不兼容,在该模块中,所有内容都必须包含并与大多数构建系统(webpack、browserify 等(兼容。

我尝试遵循谷歌工程师@surma的要点,旨在使wasm/emscripten和webpack一起工作,但没有运气(见要点的最后评论(

我试图实现的是一个对用户透明的 npm 模块。例如:

npm install x
import { y } from "x";

应该工作。这包括wasm代码,并且与大多数捆绑器兼容。

这可能吗?如果是这样,是否有任何 npm 包的例子使其工作?

干杯!

我将WASM模块捆绑到opus-stream-decoderNPM包中。package.json使用main属性来声明 WASM 入口点。另请查看显示导入它的test-*文件,使用新的 ES 模块import语法或旧require()

相关内容

  • 没有找到相关文章

最新更新