Files
GDevelop/GDJS/scripts/build.js
T
2021-07-13 13:46:32 +01:00

73 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const esbuild = require('esbuild');
const path = require('path');
const shell = require('shelljs');
const {
getAllInOutFilePaths,
isUntransformedFile,
} = require('./lib/runtime-files-list');
const args = require('minimist')(process.argv.slice(2), {
string: ['out'],
});
const fs = require('fs').promises;
/** @param {string} outPath */
const renameBuiltFile = (outPath) => {
return outPath.replace(/\.ts$/, '.js');
};
const bundledOutPath =
args.out || path.join(__dirname, '../../newIDE/app/resources/GDJS/Runtime');
if (!args.out) {
shell.echo(
`️ --out (path where to build GDJS Runtime and Extensions) not specified. Using "../../newIDE/app/resources/GDJS/Runtime" by default (used by electron-app and GDJS tests).`
);
}
shell.mkdir('-p', bundledOutPath);
(async () => {
const esbuildService = await esbuild.startService();
// Generate the output file paths
const {
allGDJSInOutFilePaths,
allExtensionsInOutFilePaths,
} = await getAllInOutFilePaths({ bundledOutPath });
// Build (or copy) all the files
let errored = false;
const startTime = Date.now();
await Promise.all(
[...allGDJSInOutFilePaths, ...allExtensionsInOutFilePaths].map(
async ({ inPath, outPath }) => {
if (isUntransformedFile(inPath)) {
try {
await fs.mkdir(path.dirname(outPath), { recursive: true });
await fs.copyFile(inPath, outPath);
} catch (err) {
shell.echo(`❌ Error while copying "${inPath}":` + err);
errored = true;
}
return;
}
return esbuildService
.build({
sourcemap: true,
entryPoints: [inPath],
outfile: renameBuiltFile(outPath),
})
.catch(() => {
// Error is already logged by esbuild.
errored = true;
});
}
)
);
esbuildService.stop();
const buildDuration = Date.now() - startTime;
if (!errored) shell.echo(`✅ GDJS built in ${buildDuration}ms`);
if (errored) shell.exit(1);
})();