mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-15 14:29:25 +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 { build } from 'esbuild';
|
||||||
import { mkdir, writeFile } from 'node:fs/promises';
|
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';
|
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) => {
|
||||||
const commonConfig = { ...defaultConfig, entryName };
|
const commonOptions = { ...defaultOptions, entryName } as const;
|
||||||
const configs = [
|
const buildConfigs = [
|
||||||
{ ...commonConfig },
|
// package.mjs
|
||||||
|
{ ...commonOptions },
|
||||||
|
// package.min.mjs
|
||||||
{
|
{
|
||||||
...commonConfig,
|
...commonOptions,
|
||||||
minify: true,
|
minify: true,
|
||||||
metafile: shouldVisualize,
|
metafile: shouldVisualize,
|
||||||
},
|
},
|
||||||
{ ...commonConfig, core: true },
|
// package.core.mjs
|
||||||
|
{ ...commonOptions, core: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
if (entryName === 'mermaid') {
|
if (entryName === 'mermaid') {
|
||||||
const iifeConfig: MermaidBuildOptions = { ...commonConfig, format: 'iife' };
|
const iifeOptions: MermaidBuildOptions = { ...commonOptions, format: 'iife' };
|
||||||
configs.push(
|
buildConfigs.push(
|
||||||
{ ...iifeConfig },
|
// mermaid.js
|
||||||
{ ...iifeConfig, minify: true },
|
{ ...iifeOptions },
|
||||||
|
// mermaid.min.js
|
||||||
|
{ ...iifeOptions, minify: true, metafile: shouldVisualize },
|
||||||
|
// mermaid.tiny.min.js
|
||||||
{
|
{
|
||||||
...iifeConfig,
|
...iifeOptions,
|
||||||
minify: true,
|
minify: true,
|
||||||
includeLargeDiagrams: false,
|
includeLargeDiagrams: false,
|
||||||
metafile: shouldVisualize,
|
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) {
|
if (shouldVisualize) {
|
||||||
for (const { metafile } of results) {
|
for (const { metafile } of results) {
|
||||||
@@ -39,8 +45,9 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const fileName = Object.keys(metafile.outputs)
|
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/', '');
|
.replace('dist/', '');
|
||||||
|
// Upload metafile into https://esbuild.github.io/analyze/
|
||||||
await writeFile(`stats/${fileName}.meta.json`, JSON.stringify(metafile));
|
await writeFile(`stats/${fileName}.meta.json`, JSON.stringify(metafile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,18 +4,30 @@ import cors from 'cors';
|
|||||||
import { getBuildConfig } from './util.js';
|
import { getBuildConfig } from './util.js';
|
||||||
import { context } from 'esbuild';
|
import { context } from 'esbuild';
|
||||||
import chokidar from 'chokidar';
|
import chokidar from 'chokidar';
|
||||||
|
import { defaultOptions } from './util';
|
||||||
|
|
||||||
const mermaidCtx = await context(
|
const mermaidCtx = await context(
|
||||||
getBuildConfig({ minify: false, core: false, entryName: 'mermaid' })
|
getBuildConfig({ ...defaultOptions, minify: false, core: false, entryName: 'mermaid' })
|
||||||
);
|
);
|
||||||
const mermaidIIFECtx = await context(
|
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(
|
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(
|
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];
|
const contexts = [mermaidCtx, mermaidIIFECtx, externalCtx, zenumlCtx];
|
||||||
|
|
||||||
|
@@ -17,7 +17,7 @@ export interface MermaidBuildOptions {
|
|||||||
includeLargeDiagrams: boolean;
|
includeLargeDiagrams: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const defaultConfig: Omit<MermaidBuildOptions, 'entryName'> = {
|
export const defaultOptions: Omit<MermaidBuildOptions, 'entryName'> = {
|
||||||
minify: false,
|
minify: false,
|
||||||
metafile: false,
|
metafile: false,
|
||||||
core: false,
|
core: false,
|
||||||
@@ -43,7 +43,7 @@ const buildOptions = (override: BuildOptions): BuildOptions => {
|
|||||||
|
|
||||||
const getFileName = (
|
const getFileName = (
|
||||||
fileName: string,
|
fileName: string,
|
||||||
{ core, format, includeLargeDiagrams, minify, entryName }: MermaidBuildOptions
|
{ core, format, minify, includeLargeDiagrams }: MermaidBuildOptions
|
||||||
) => {
|
) => {
|
||||||
if (core) {
|
if (core) {
|
||||||
fileName += '.core';
|
fileName += '.core';
|
||||||
|
Reference in New Issue
Block a user