flecks/packages/web/src/server/build/wait-for-manifest.js

30 lines
706 B
JavaScript
Raw Normal View History

2022-03-18 04:18:16 -05:00
const {stat} = require('fs/promises');
const WebpackBeforeBuildPlugin = require('before-build-webpack');
class WaitForManifestPlugin extends WebpackBeforeBuildPlugin {
constructor(manifest) {
super(async (stats, callback) => {
// eslint-disable-next-line no-constant-condition
while (true) {
try {
// eslint-disable-next-line no-await-in-loop
await stat(manifest);
callback();
break;
}
catch (error) {
// eslint-disable-next-line no-await-in-loop
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
}, ['beforeCompile']);
}
}
module.exports = WaitForManifestPlugin;