Используя накопительный пакет, я пытаюсь связать библиотеку машинописного текста, которая импортирует и вызывает модуль npm, содержащий файл wasm.
Только полученный пакет не содержит следов содержимого файла wasm. Как я могу заставить его связывать веб-сборки тоже?
Вот ключевые файлы из того, что я пробовал:
// typescript/src/index.ts
import * as libEd from "ed25519-raw";
export const seed_from_phrase = libEd.seed_from_phrase;
export const gen_keypair = libEd.gen_keypair;
Мой пакет. json is
{
"name": "ed25519",
"version": "0.1.0",
"description": "ed25519",
"main": "typescript/dist/bundle.cjs.js",
"types": "typescript/src/index.ts",
"dependencies": {
"ed25519-raw": "git+https://github.com/cmanteiga/ed25519-raw"
},
"devDependencies": {
"@types/node": "^13.7.1",
"typescript": "^3.7.5",
"@rollup/plugin-commonjs": "^11.0.2",
"@rollup/plugin-multi-entry": "^3.0.0",
"@rollup/plugin-node-resolve": "^7.1.1",
"@rollup/plugin-wasm": "^3.0.0",
"rollup": "^1.31.1",
"rollup-plugin-typescript2": "^0.26.0"
}
}
И, наконец, конфигурация накопительного пакета
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import typescript from "rollup-plugin-typescript2";
import multi from "@rollup/plugin-multi-entry";
import wasm from "@rollup/plugin-wasm";
export default {
input: [`typescript/src/index.ts`],
output: {
sourcemap: true,
format: "cjs",
name: "ed25519",
file: `typescript/dist/bundle.cjs.js`
},
plugins: [
multi(),
typescript(),
commonjs({
include: [
`typescript/src/**/*.js`,
`typescript/src/**/*.ts`,
`typescript/src/**/*.wasm`,
"node_modules/**"
]
}),
resolve({
browser: true,
extensions: [".js", ".ts", ".wasm"]
}),
wasm()
]
};
(полный репозиторий с примерами доступен по адресу https://github.com/nmrshll/ed25519)
Затем генерируется комплект через node node_modules/.bin/rollup -c
Он содержит function _loadWasmModule (sync, src, imports)
, но он никогда не вызывается, и нет никаких следов встроенной веб-сборки (что можно ожидать в виде жестко закодированной строки base64).
Как можно Я это исправлю?
РЕДАКТИРОВАТЬ: файл wasm, содержащийся в "ed25519-raw" был создан с wasm-pack
с параметром --target web
It имеет значение, потому что запуск wasm-pack
с параметром --target browser
(по умолчанию) генерирует другой вывод (с внедренным wasm, но с проблемами компиляции)