mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-15 06:19:24 +02:00
Merge branch 'sidv/splitChunks' into sidv/tinyMermaid
* sidv/splitChunks: chore: Add analyzer comment chore: Split chunks into folders chore: Split chunks into folders chore: Add defaultOptions to server chore: Split chunks into folders
This commit is contained in:
@@ -1,29 +1,35 @@
|
||||
import { build } from 'esbuild';
|
||||
import { mkdir, writeFile } from 'node:fs/promises';
|
||||
import { MermaidBuildOptions, defaultConfig, getBuildConfig } from './util.js';
|
||||
import { MermaidBuildOptions, defaultOptions, getBuildConfig } from './util.js';
|
||||
import { packageOptions } from '../.build/common.js';
|
||||
|
||||
const shouldVisualize = process.argv.includes('--visualize');
|
||||
|
||||
const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
||||
const commonConfig = { ...defaultConfig, entryName };
|
||||
const configs = [
|
||||
{ ...commonConfig },
|
||||
const commonOptions = { ...defaultOptions, entryName } as const;
|
||||
const buildConfigs = [
|
||||
// package.mjs
|
||||
{ ...commonOptions },
|
||||
// package.min.mjs
|
||||
{
|
||||
...commonConfig,
|
||||
...commonOptions,
|
||||
minify: true,
|
||||
metafile: shouldVisualize,
|
||||
},
|
||||
{ ...commonConfig, core: true },
|
||||
// package.core.mjs
|
||||
{ ...commonOptions, core: true },
|
||||
];
|
||||
|
||||
if (entryName === 'mermaid') {
|
||||
const iifeConfig: MermaidBuildOptions = { ...commonConfig, format: 'iife' };
|
||||
configs.push(
|
||||
{ ...iifeConfig },
|
||||
{ ...iifeConfig, minify: true },
|
||||
const iifeOptions: MermaidBuildOptions = { ...commonOptions, format: 'iife' };
|
||||
buildConfigs.push(
|
||||
// mermaid.js
|
||||
{ ...iifeOptions },
|
||||
// mermaid.min.js
|
||||
{ ...iifeOptions, minify: true, metafile: shouldVisualize },
|
||||
// mermaid.tiny.min.js
|
||||
{
|
||||
...iifeConfig,
|
||||
...iifeOptions,
|
||||
minify: true,
|
||||
includeLargeDiagrams: false,
|
||||
metafile: shouldVisualize,
|
||||
@@ -31,7 +37,7 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
||||
);
|
||||
}
|
||||
|
||||
const results = await Promise.all(configs.map((config) => build(getBuildConfig(config))));
|
||||
const results = await Promise.all(buildConfigs.map((option) => build(getBuildConfig(option))));
|
||||
|
||||
if (shouldVisualize) {
|
||||
for (const { metafile } of results) {
|
||||
@@ -39,8 +45,9 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
||||
continue;
|
||||
}
|
||||
const fileName = Object.keys(metafile.outputs)
|
||||
.filter((key) => key.includes('.min') && key.endsWith('js'))[0]
|
||||
.filter((file) => !file.includes('chunks') && file.endsWith('js'))[0]
|
||||
.replace('dist/', '');
|
||||
// Upload metafile into https://esbuild.github.io/analyze/
|
||||
await writeFile(`stats/${fileName}.meta.json`, JSON.stringify(metafile));
|
||||
}
|
||||
}
|
||||
|
@@ -4,18 +4,30 @@ import cors from 'cors';
|
||||
import { getBuildConfig } from './util.js';
|
||||
import { context } from 'esbuild';
|
||||
import chokidar from 'chokidar';
|
||||
import { defaultOptions } from './util';
|
||||
|
||||
const mermaidCtx = await context(
|
||||
getBuildConfig({ minify: false, core: false, entryName: 'mermaid' })
|
||||
getBuildConfig({ ...defaultOptions, minify: false, core: false, entryName: 'mermaid' })
|
||||
);
|
||||
const mermaidIIFECtx = await context(
|
||||
getBuildConfig({ minify: false, core: false, entryName: 'mermaid', format: 'iife' })
|
||||
getBuildConfig({
|
||||
...defaultOptions,
|
||||
minify: false,
|
||||
core: false,
|
||||
entryName: 'mermaid',
|
||||
format: 'iife',
|
||||
})
|
||||
);
|
||||
const externalCtx = await context(
|
||||
getBuildConfig({ minify: false, core: false, entryName: 'mermaid-example-diagram' })
|
||||
getBuildConfig({
|
||||
...defaultOptions,
|
||||
minify: false,
|
||||
core: false,
|
||||
entryName: 'mermaid-example-diagram',
|
||||
})
|
||||
);
|
||||
const zenumlCtx = await context(
|
||||
getBuildConfig({ minify: false, core: false, entryName: 'mermaid-zenuml' })
|
||||
getBuildConfig({ ...defaultOptions, minify: false, core: false, entryName: 'mermaid-zenuml' })
|
||||
);
|
||||
const contexts = [mermaidCtx, mermaidIIFECtx, externalCtx, zenumlCtx];
|
||||
|
||||
|
@@ -17,7 +17,7 @@ export interface MermaidBuildOptions {
|
||||
includeLargeDiagrams: boolean;
|
||||
}
|
||||
|
||||
export const defaultConfig: Omit<MermaidBuildOptions, 'entryName'> = {
|
||||
export const defaultOptions: Omit<MermaidBuildOptions, 'entryName'> = {
|
||||
minify: false,
|
||||
metafile: false,
|
||||
core: false,
|
||||
@@ -43,7 +43,7 @@ const buildOptions = (override: BuildOptions): BuildOptions => {
|
||||
|
||||
const getFileName = (
|
||||
fileName: string,
|
||||
{ core, format, includeLargeDiagrams, minify, entryName }: MermaidBuildOptions
|
||||
{ core, format, minify, includeLargeDiagrams }: MermaidBuildOptions
|
||||
) => {
|
||||
if (core) {
|
||||
fileName += '.core';
|
||||
|
Reference in New Issue
Block a user