chore: Add tiny bundle

Excludes elk and mindmap at build time
This commit is contained in:
Sidharth Vinod
2023-08-14 07:34:16 +05:30
parent 8f44de651b
commit 5f3c4fccaf
6 changed files with 39 additions and 7 deletions

View File

@@ -6,7 +6,9 @@ import { packageOptions } from '../.build/common.js';
const shouldVisualize = process.argv.includes('--visualize');
const buildPackage = async (entryName: keyof typeof packageOptions) => {
// package.mjs
await build(getBuildConfig({ entryName, minify: false }));
// package.min.mjs
const { metafile } = await build(
getBuildConfig({ entryName, minify: true, metafile: shouldVisualize })
);
@@ -14,8 +16,27 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
// Upload metafile into https://esbuild.github.io/analyze/
await writeFile(`stats/meta-${entryName}.json`, JSON.stringify(metafile));
}
// package.core.mjs
await build(getBuildConfig({ entryName, minify: false, core: true }));
if (entryName === 'mermaid') {
// mermaid.js
await build(getBuildConfig({ entryName, minify: false, format: 'iife' }));
// mermaid.min.js
await build(getBuildConfig({ entryName, minify: true, format: 'iife' }));
// mermaid.tiny.min.js
const { metafile } = await build(
getBuildConfig({
entryName,
minify: true,
includeLargeDiagrams: false,
metafile: shouldVisualize,
format: 'iife',
})
);
if (metafile) {
await writeFile(`stats/meta-${entryName}-tiny.json`, JSON.stringify(metafile));
}
}
};
const handler = (e) => {

View File

@@ -14,6 +14,7 @@ interface MermaidBuildOptions {
metafile?: boolean;
format?: 'esm' | 'iife';
entryName: keyof typeof packageOptions;
includeLargeDiagrams?: boolean;
}
const buildOptions = (override: BuildOptions): BuildOptions => {
@@ -37,7 +38,8 @@ export const getBuildConfig = ({
core,
entryName,
metafile,
format,
format = 'esm',
includeLargeDiagrams = true,
}: MermaidBuildOptions): BuildOptions => {
const external: string[] = ['require', 'fs', 'path'];
const { name, file, packageName } = packageOptions[entryName];
@@ -45,11 +47,15 @@ export const getBuildConfig = ({
absWorkingDir: resolve(__dirname, `../packages/${packageName}`),
entryPoints: {
[`${name}${core ? '.core' : format === 'iife' ? '' : '.esm'}${
minify ? '.min' : ''
}`]: `src/${file}`,
includeLargeDiagrams ? '' : '.tiny'
}${minify ? '.min' : ''}`]: `src/${file}`,
},
metafile,
logLevel: 'info',
define: {
// This needs to be stringified for esbuild
includeLargeDiagrams: `${includeLargeDiagrams}`,
},
});
if (core) {

View File

@@ -1,7 +1,7 @@
import type { DiagramDefinition } from '../../diagram-api/types.js';
import { renderer } from './errorRenderer.js';
const diagram: DiagramDefinition = {
export const diagram: DiagramDefinition = {
db: {},
renderer,
parser: {

View File

@@ -19,7 +19,9 @@ const detector: DiagramDetector = (txt, config): boolean => {
};
const loader: DiagramLoader = async () => {
const { diagram } = await import('./flowchart-elk-definition.js');
const { diagram } = includeLargeDiagrams
? await import('./flowchart-elk-definition.js')
: await import('../../error/errorDiagram.js');
return { id, diagram };
};

View File

@@ -10,7 +10,9 @@ const detector: DiagramDetector = (txt) => {
};
const loader: DiagramLoader = async () => {
const { diagram } = await import('./mindmap-definition.js');
const { diagram } = includeLargeDiagrams
? await import('./mindmap-definition.js')
: await import('../error/errorDiagram.js');
return { id, diagram };
};

1
packages/mermaid/src/types.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
declare let includeLargeDiagrams: boolean;