lowcode-engine/modules/code-generator/scripts/build.js

76 lines
2.0 KiB
JavaScript

/* eslint-disable no-console */
/* eslint-disable @typescript-eslint/no-require-imports */
const _ = require('lodash');
const esbuild = require('esbuild');
const concurrently = require('concurrently');
const argv = require('yargs-parser')(process.argv.slice(2));
const packageJson = require('../package.json');
if (!argv.format) {
buildAll();
} else {
buildFormat(argv.format, argv.out || 'dist');
}
function buildAll() {
concurrently(
[
{ name: 'build:types', command: 'sh scripts/build-types' },
{ name: 'build:cjs', command: 'node scripts/build --format=cjs --out=lib' },
{ name: 'build:esm', command: 'node scripts/build --format=esm --out=es' },
{ name: 'build:standalone', command: 'node scripts/build-standalone' },
{ name: 'build:standalone-worker', command: 'node scripts/build-standalone-worker' },
{ name: 'build:standalone-loader', command: 'node scripts/build-standalone-loader' },
{ name: 'build:cli', command: 'node scripts/build-cli' },
],
{
prefix: 'name',
killOthers: ['failure'],
restartTries: 0,
},
).then(
() => {
console.log('all done.');
},
() => {
process.exit(1);
},
);
}
function buildFormat(format, outDir) {
try {
console.log('building %s...', format);
const startTime = Date.now();
const result = esbuild.buildSync({
entryPoints: ['src/index.ts'],
outfile: `${outDir}/index.js`,
bundle: true,
platform: 'node',
target: ['node10'],
format,
sourcemap: true,
sourcesContent: true,
define: {},
treeShaking: true,
external: _.keys(packageJson.dependencies),
minify: false,
legalComments: 'external',
});
if (result.errors.length > 0) {
throw result.errors;
}
if (result.warnings.length > 0) {
result.warnings.forEach((warnings) => {
console.warn(warnings);
});
}
console.log('built %s in %ds', format, ((Date.now() - startTime) / 1000).toFixed(2));
} catch (e) {
console.error(e);
process.exit(1);
}
}