weapp-socket.io/plugins/fixObjectCallPlugin.js

26 lines
843 B
JavaScript

const fs = require('fs');
const path = require('path');
class StripObjectCallPlugin {
apply(compiler) {
compiler.hooks.afterEmit.tap('StripObjectCallPlugin', (compilation) => {
const assets = compilation.getAssets();
assets.forEach((asset) => {
if (asset.name.endsWith('.js')) {
const outputPath = path.join(compiler.options.output.path, asset.name);
let code = fs.readFileSync(outputPath, 'utf8');
// 将 Object(module)(args) => module(args)
// 匹配 Object(...) 后跟一个小括号开始调用
code = code.replace(/\bObject\(\s*([^)]+?)\s*\)\s*\(/g, '$1(');
fs.writeFileSync(outputPath, code, 'utf8');
console.log(`[StripObjectCallPlugin] Patched ${asset.name}`);
}
});
});
}
}
module.exports = StripObjectCallPlugin;