webpack/lib/node/ReadFileCompileWasmTemplate...

51 lines
1.5 KiB
JavaScript
Raw Normal View History

/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
const BaseWasmMainTemplatePlugin = require("../BaseWasmMainTemplatePlugin");
const WasmModuleTemplatePlugin = require("../wasm/WasmModuleTemplatePlugin");
class ReadFileCompileWasmTemplatePlugin {
apply(compiler) {
2018-02-25 09:00:20 +08:00
compiler.hooks.thisCompilation.tap(
"ReadFileCompileWasmTemplatePlugin",
compilation => {
const generateLoadBinaryCode = path => `new Promise(function (resolve, reject) {
var {readFile} = require("fs");
var {join} = require("path");
try {
readFile(join(__dirname, ${
path
}), function(err, buffer){
if (err) return reject(err);
// Fake fetch response
resolve({
arrayBuffer() {
return Promise.resolve(buffer)
}
});
});
} catch (err) {
reject(err);
}
});
`;
new BaseWasmMainTemplatePlugin().apply(
compilation.mainTemplate,
generateLoadBinaryCode
);
2018-02-25 09:00:20 +08:00
new WasmModuleTemplatePlugin().apply(
compilation.moduleTemplates.javascript
);
}
);
}
}
module.exports = ReadFileCompileWasmTemplatePlugin;