在 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 二进制文件。
与所有主要资产捆绑器兼容。无论用户使用 webpack、rollup、parcel 还是其他东西,他都不应该配置任何东西来打包我的 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)