我构建了一个AudioWorklet,它导入了一个npm模块。这在运行时工作,但在编译时失败。我的理解(但对Worklets和WebWorkers来说是新的)是AudioWorklet代码需要是自包含的,并且不能在生产中提取导入。
我们可以在构建时使用npm导入来编译AudioWorklet吗(或者其他更好的做法)?使用Vite进行前端编译。
下面是我的Worklet的一个简化示例,但没有真实的的代码来缩短示例。
import { ToolWASM } from 'tool/dist/wasm.es.js'
import Tool from 'tool/dist/core.es.js'
let tool = new Tool(ToolWASM)
class SampleProcess extends AudioWorkletProcessor {
constructor() {
super()
this.tool = tool
}
process() {
this.tool.doSomething()
return false
}
}
registerProcessor('sample-processor', SampleProcess)
1条答案
按热度按时间t98cgbkg1#
我最终提出的解决方案使用了Rollup来实现它。最后添加了一个基本的Rollup设置,以便在运行时和编译时绑定文件。我这样做,因为试图将它整合到Vite中,影响了Vite与我的Tauri应用程序的即插即用设置。
这种方法使我能够完全独立地运行我的
rollup
,并且在构建应用程序的其余部分之前。rollup.config.js
的设置如下。在我的
package.json
中创建了几个可以运行的脚本。对于任何好奇的人来说,build:<name>
和dev:<name>
都使用npm-run-all
,所以您看到的脚本是顺序运行(build
)或并行运行(dev
)的脚本的一部分。