UNPKG

quirc-wasm-module

Version:

Quirc wasm module compiled using Emscripten written in C programming language.

56 lines (46 loc) 2.44 kB
const path = require('path'); const MemoryFs = require('memory-fs'); const realFs = require('fs-extra'); function Index() { const operationName = 'Copying the wasm file to output path...'; this.apply = function (compiler) { compiler.plugin('done', function () { let fs = compiler.outputFileSystem; if (!(fs instanceof MemoryFs)) { // https://github.com/webpack/webpack/blob/master/lib/node/NodeOutputFileSystem.js // This means we are writing directly to disk. // Since NodeOutputFileSystem doesn't implement readdirSync() // let's just use fs-extra fs = require('fs-extra'); } const webpackOutputPath = compiler.options.output.path; /*const craPath = path.join(compiler.options.output.path, './static/js');*/ const sourcePath = path.resolve(__dirname, '../../dist'); const fileList = realFs.readdirSync(sourcePath); const wasmFiles = fileList.filter(value => /\.wasm$/.test(value)); const srcs = wasmFiles.map(wasmFile => path.join(sourcePath, wasmFile)); const dests = wasmFiles.map(wasmFile => path.join(webpackOutputPath, 'quirc-wasm-emcc', wasmFile)); if (srcs.length && dests.length) { try { console.log(`[QuircWasmPlugin] Doing operation: "${operationName}"`); srcs.forEach((src, i) => { const dirname = path.dirname(dests[i]); const data = realFs.readFileSync(src); if (!fs.existsSync(dirname)) { fs.mkdirSync(dirname); } fs.writeFileSync(dests[i], data); /* fs.writeFileSync(path.join(craPath, wasmFile), data); */ }) console.log(`[QuircWasmPlugin] Successfully finished operation: "${operationName}"`); } catch (err) { console.error(`[QuircWasmPlugin] An error occured while doing operation: "${operationName}"`, err); throw new Error(`[QuircWasmPlugin] An error occured while doing operation: "${operationName}"`); } } }); } } module.exports = Index;