Build Visualization

This commit is contained in:
Sidharth Vinod
2023-02-19 20:01:41 +05:30
parent 2239996f3a
commit fa5459d48b
2 changed files with 18 additions and 11 deletions

View File

@@ -1,12 +1,18 @@
import { build } from 'esbuild';
import { build, context } from 'esbuild';
import { mkdir, writeFile } from 'node:fs/promises';
import { getBuildConfig, packageOptions } from './util.js';
import { context } from 'esbuild';
const shouldWatch = process.argv.includes('--watch');
const shouldVisualize = process.argv.includes('--visualize');
const buildPackage = async (entryName: keyof typeof packageOptions) => {
await build(getBuildConfig({ entryName, minify: false }));
await build(getBuildConfig({ entryName, minify: true }));
const { metafile } = await build(
getBuildConfig({ entryName, minify: true, metafile: shouldVisualize })
);
if (metafile) {
await writeFile(`stats/meta-${entryName}.json`, JSON.stringify(metafile));
}
await build(getBuildConfig({ entryName, minify: false, core: true }));
};
@@ -16,6 +22,7 @@ const handler = (e) => {
};
const main = async () => {
await mkdir('stats');
const packageNames = Object.keys(packageOptions) as (keyof typeof packageOptions)[];
for (const pkg of packageNames) {
await buildPackage(pkg).catch(handler);

View File

@@ -23,6 +23,7 @@ export const packageOptions = {
interface MermaidBuildOptions {
minify: boolean;
core?: boolean;
metafile?: boolean;
entryName: keyof typeof packageOptions;
}
@@ -58,7 +59,12 @@ const jisonPlugin = {
},
};
export const getBuildConfig = ({ minify, core, entryName }: MermaidBuildOptions): BuildOptions => {
export const getBuildConfig = ({
minify,
core,
entryName,
metafile,
}: MermaidBuildOptions): BuildOptions => {
const external: string[] = ['require', 'fs', 'path'];
const { name, file, packageName } = packageOptions[entryName];
let output: BuildOptions = buildOptions({
@@ -66,6 +72,7 @@ export const getBuildConfig = ({ minify, core, entryName }: MermaidBuildOptions)
entryPoints: {
[`${name}.esm${core ? '.core' : ''}${minify ? '.min' : ''}`]: `src/${file}`,
},
metafile,
});
if (core) {
@@ -78,12 +85,5 @@ export const getBuildConfig = ({ minify, core, entryName }: MermaidBuildOptions)
external.push(...Object.keys(dependencies));
output.external = external;
}
// if (watch && config.build) {
// config.build.watch = {
// include: ['packages/mermaid-example-diagram/src/**', 'packages/mermaid/src/**'],
// };
// }
return output;
};