【问题标题】:What is the preferred way to publish a wasm library on npm?在 npm 上发布 wasm 库的首选方式是什么?
【发布时间】:2019-12-06 02:51:18
【问题描述】:
有没有一种好方法可以在 npm 上发布使用 wasm 二进制文件的库?
到目前为止,我遇到了几个问题。理想情况下,我想要的东西是:
完全对用户透明。他们可以简单地npm install 包,然后import {my_function} from my_package,甚至不必担心包是否使用 wasm 二进制文件。
与所有主要资产捆绑器兼容。无论用户使用 webpack、rollup、parcel 还是其他东西,他都不应该配置任何东西来打包我的 wasm 文件,将其与其他资产一起分发,并使其可以从我的库中访问。
高效。理想情况下,wasm 文件不内联在 js 文件中,以便它可以以流方式解析和编译。这一点不如其他点重要,但如果能够利用所有速度 wasm 提供的优势,那就太好了。
【问题讨论】:
标签:
javascript
npm
package
webassembly
【解决方案1】:
我认为这在很大程度上取决于您开始使用的生态系统和语言。我熟悉的一条路径是project to port Rust to wasm。从他们的documentation here 看来,他们的流程实现了您对用户透明的第一个要点。
他们的进程 provides bindings 似乎也通过 JavaScript 访问 wasm 文件,而不是内联它;这将照顾你的子弹效率。
他们的工作流程只为 npm 创建必要的文件(package.json 和构建/依赖项的详细信息)。如果应用程序直接导入wasm 文件(import wasm from 'library/src/library.wasm'),我可以看到资产捆绑程序存在问题。但是一点谷歌搜索会为您列出的所有捆绑程序找到插件。我不确定您是否想在库本身中添加这些插件,或者正确的方法是什么。所以我不太确定你的第二个子弹。