在 npm 上发布 wasm 库的首选方式是啥?

Posted

技术标签:

【中文标题】在 npm 上发布 wasm 库的首选方式是啥?【英文标题】: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 二进制文件。

与所有主要资产捆绑器兼容。无论用户使用 webpackrollupparcel 还是其他东西,他都不应该配置任何东西来打包我的 wasm 文件,将其与其他资产一起分发,并使其可以从我的库中访问。

高效。理想情况下,wasm 文件内联在 js 文件中,以便它可以以流方式解析和编译。这一点不如其他点重要,但如果能够利用所有速度 wasm 提供的优势,那就太好了。

【问题讨论】:

【参考方案1】:

我认为这在很大程度上取决于您开始使用的生态系统和语言。我熟悉的一条路径是project to port Rust to wasm。从他们的documentation here 看来,他们的流程实现了您对用户透明的第一个要点。

他们的进程 provides bindings 似乎也通过 javascript 访问 wasm 文件,而不是内联它;这将照顾你的子弹效率

他们的工作流程只为 npm 创建必要的文件(package.json 和构建/依赖项的详细信息)。如果应用程序直接导入wasm 文件(import wasm from 'library/src/library.wasm'),我可以看到资产捆绑程序存在问题。但是一点谷歌搜索会为您列出的所有捆绑程序找到插件。我不确定您是否想在库本身中添加这些插件,或者正确的方法是什么。所以我不太确定你的第二个子弹。

【讨论】:

以上是关于在 npm 上发布 wasm 库的首选方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在网站上动态嵌入 youtube 频道的最佳方式是啥(首选 wordpress)

NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?

使用中继传递数据字典的首选方式是啥

将工件上传到 Artifactory 的首选方式是啥?

处理输入验证的专业/首选方式是啥

在 React Native 中,播放音频流的首选方式是啥?