20 lines
825 B
JavaScript
20 lines
825 B
JavaScript
|
import * as fs from 'fs'
|
||
|
import { execSync } from 'child_process'
|
||
|
import { chdir } from 'process'
|
||
|
|
||
|
chdir('wasm')
|
||
|
|
||
|
execSync('wasm-pack build -t nodejs')
|
||
|
|
||
|
const pkg_name = JSON.parse(fs.readFileSync('pkg/package.json', 'utf8'))['name']
|
||
|
|
||
|
const js_path = `pkg/${pkg_name}.js`
|
||
|
let loader_js = fs.readFileSync(js_path, 'utf8')
|
||
|
|
||
|
loader_js = `import wasmModule from './${pkg_name}_bg.wasm'\n\n` + loader_js
|
||
|
loader_js = loader_js.replace('const { TextDecoder, TextEncoder } = require(String.raw`util`);\n', '')
|
||
|
loader_js = loader_js.replace(`const path = require('path').join(__dirname, '${pkg_name}_bg.wasm');\n`, '')
|
||
|
loader_js = loader_js.replace("const bytes = require('fs').readFileSync(path);\n\n", '')
|
||
|
loader_js = loader_js.replace('const wasmModule = new WebAssembly.Module(bytes);\n', '')
|
||
|
|
||
|
fs.writeFileSync(js_path, loader_js)
|