mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-01 14:46:41 +02:00
chore: Add tiny bundle
Excludes elk and mindmap at build time
This commit is contained in:
@@ -6,7 +6,9 @@ import { packageOptions } from '../.build/common.js';
|
|||||||
const shouldVisualize = process.argv.includes('--visualize');
|
const shouldVisualize = process.argv.includes('--visualize');
|
||||||
|
|
||||||
const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
||||||
|
// package.mjs
|
||||||
await build(getBuildConfig({ entryName, minify: false }));
|
await build(getBuildConfig({ entryName, minify: false }));
|
||||||
|
// package.min.mjs
|
||||||
const { metafile } = await build(
|
const { metafile } = await build(
|
||||||
getBuildConfig({ entryName, minify: true, metafile: shouldVisualize })
|
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/
|
// Upload metafile into https://esbuild.github.io/analyze/
|
||||||
await writeFile(`stats/meta-${entryName}.json`, JSON.stringify(metafile));
|
await writeFile(`stats/meta-${entryName}.json`, JSON.stringify(metafile));
|
||||||
}
|
}
|
||||||
|
// package.core.mjs
|
||||||
await build(getBuildConfig({ entryName, minify: false, core: true }));
|
await build(getBuildConfig({ entryName, minify: false, core: true }));
|
||||||
await build(getBuildConfig({ entryName, minify: true, format: 'iife' }));
|
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) => {
|
const handler = (e) => {
|
||||||
|
@@ -14,6 +14,7 @@ interface MermaidBuildOptions {
|
|||||||
metafile?: boolean;
|
metafile?: boolean;
|
||||||
format?: 'esm' | 'iife';
|
format?: 'esm' | 'iife';
|
||||||
entryName: keyof typeof packageOptions;
|
entryName: keyof typeof packageOptions;
|
||||||
|
includeLargeDiagrams?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const buildOptions = (override: BuildOptions): BuildOptions => {
|
const buildOptions = (override: BuildOptions): BuildOptions => {
|
||||||
@@ -37,7 +38,8 @@ export const getBuildConfig = ({
|
|||||||
core,
|
core,
|
||||||
entryName,
|
entryName,
|
||||||
metafile,
|
metafile,
|
||||||
format,
|
format = 'esm',
|
||||||
|
includeLargeDiagrams = true,
|
||||||
}: MermaidBuildOptions): BuildOptions => {
|
}: MermaidBuildOptions): BuildOptions => {
|
||||||
const external: string[] = ['require', 'fs', 'path'];
|
const external: string[] = ['require', 'fs', 'path'];
|
||||||
const { name, file, packageName } = packageOptions[entryName];
|
const { name, file, packageName } = packageOptions[entryName];
|
||||||
@@ -45,11 +47,15 @@ export const getBuildConfig = ({
|
|||||||
absWorkingDir: resolve(__dirname, `../packages/${packageName}`),
|
absWorkingDir: resolve(__dirname, `../packages/${packageName}`),
|
||||||
entryPoints: {
|
entryPoints: {
|
||||||
[`${name}${core ? '.core' : format === 'iife' ? '' : '.esm'}${
|
[`${name}${core ? '.core' : format === 'iife' ? '' : '.esm'}${
|
||||||
minify ? '.min' : ''
|
includeLargeDiagrams ? '' : '.tiny'
|
||||||
}`]: `src/${file}`,
|
}${minify ? '.min' : ''}`]: `src/${file}`,
|
||||||
},
|
},
|
||||||
metafile,
|
metafile,
|
||||||
logLevel: 'info',
|
logLevel: 'info',
|
||||||
|
define: {
|
||||||
|
// This needs to be stringified for esbuild
|
||||||
|
includeLargeDiagrams: `${includeLargeDiagrams}`,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (core) {
|
if (core) {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import type { DiagramDefinition } from '../../diagram-api/types.js';
|
import type { DiagramDefinition } from '../../diagram-api/types.js';
|
||||||
import { renderer } from './errorRenderer.js';
|
import { renderer } from './errorRenderer.js';
|
||||||
|
|
||||||
const diagram: DiagramDefinition = {
|
export const diagram: DiagramDefinition = {
|
||||||
db: {},
|
db: {},
|
||||||
renderer,
|
renderer,
|
||||||
parser: {
|
parser: {
|
||||||
|
@@ -19,7 +19,9 @@ const detector: DiagramDetector = (txt, config): boolean => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const loader: DiagramLoader = async () => {
|
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 };
|
return { id, diagram };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -10,7 +10,9 @@ const detector: DiagramDetector = (txt) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const loader: DiagramLoader = async () => {
|
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 };
|
return { id, diagram };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
1
packages/mermaid/src/types.d.ts
vendored
Normal file
1
packages/mermaid/src/types.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
declare let includeLargeDiagrams: boolean;
|
Reference in New Issue
Block a user