Вставить модуль WebSsembly Emscripten в пакет npm - PullRequest
0 голосов
/ 29 января 2020

Я создаю npm пакет, содержащий некоторую WebAssembly, загруженную из модуля «клей-код» модуля Emscripten.

На данный момент WASM извлекается из кода клея по указанному URL-адресу stati c

// 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-адрес указан в приложении c и поэтому не совместим с модулем npm, где все должно быть включено и совместимо с большинством систем сборки (webpack, browserify, ...)

Я попытался выполнить суть от инженера google @surma, целью которого является совместная работа wasm / emscripten и webpack, но безуспешно (см. Последний комментарий к сути)

Я пытаюсь добиться прозрачного для пользователя модуля npm. Например:

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

должно работать. Это включает код wasm и совместимо с большинством пакетов.

Возможно ли это? И если да, то есть ли примеры пакетов npm, которые заставили его работать?

Cheers!

1 Ответ

1 голос
/ 29 января 2020

Я упаковал модуль WASM в пакет opus-stream-decoder NPM. package.json использует свойство main для объявления точки входа WASM. Также взгляните на test-* файлы , которые показывают, импортировать его, используя новый синтаксис ES 101 Модули * или более старый require()

...