Skip to content

Commit 9f4805e

Browse files
committed
Partially parallelize prepare-extensions.js
The compression part can now be multithreaded by Node.js
1 parent ef23830 commit 9f4805e

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

scripts/prepare-extensions.js

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const pathUtil = require('path');
2+
const {promisify} = require('util');
23
const fs = require('fs');
34
const zlib = require('zlib');
45
const Builder = require('@turbowarp/extensions/builder');
@@ -13,15 +14,34 @@ fs.rmSync(outputDirectory, {
1314
recursive: true,
1415
force: true,
1516
});
16-
for (const [relativePath, file] of Object.entries(build.files)) {
17-
console.log(`Compressing ${relativePath}`);
17+
18+
const brotliCompress = promisify(zlib.brotliCompress);
19+
const mkdir = promisify(fs.mkdir);
20+
const writeFile = promisify(fs.writeFile);
21+
22+
const exportFile = async (relativePath, file) => {
23+
// This part is unfortunately still synchronous
24+
const contents = file.read();
25+
console.log(`Generated ${relativePath}`);
26+
27+
const compressed = await brotliCompress(contents);
28+
1829
const directoryName = pathUtil.dirname(relativePath);
19-
fs.mkdirSync(pathUtil.join(outputDirectory, directoryName), {
20-
recursive: true,
30+
await mkdir(pathUtil.join(outputDirectory, directoryName), {
31+
recursive: true
2132
});
22-
const contents = file.read();
23-
const compressed = zlib.brotliCompressSync(contents);
24-
fs.writeFileSync(pathUtil.join(outputDirectory, `${relativePath}.br`), compressed);
25-
}
2633

27-
console.log(`Exported to ${outputDirectory}`);
34+
await writeFile(pathUtil.join(outputDirectory, `${relativePath}.br`), compressed)
35+
36+
console.log(`Compressed ${relativePath}`);
37+
};
38+
39+
const promises = Object.entries(build.files).map(([relativePath, file]) => exportFile(relativePath, file));
40+
Promise.all(promises)
41+
.then(() => {
42+
console.log(`Exported to ${outputDirectory}`);
43+
})
44+
.catch((err) => {
45+
console.error(err);
46+
process.exit(1);
47+
});

0 commit comments

Comments
 (0)