mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-31 22:26:53 +02:00
chore: Split chunks into folders
This commit is contained in:
@@ -8,15 +8,23 @@ import { jisonPlugin } from './jisonPlugin.js';
|
||||
|
||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||
|
||||
interface MermaidBuildOptions {
|
||||
export interface MermaidBuildOptions {
|
||||
minify: boolean;
|
||||
core?: boolean;
|
||||
metafile?: boolean;
|
||||
format?: 'esm' | 'iife';
|
||||
core: boolean;
|
||||
metafile: boolean;
|
||||
format: 'esm' | 'iife';
|
||||
entryName: keyof typeof packageOptions;
|
||||
includeLargeDiagrams?: boolean;
|
||||
includeLargeDiagrams: boolean;
|
||||
}
|
||||
|
||||
export const defaultConfig: Omit<MermaidBuildOptions, 'entryName'> = {
|
||||
minify: false,
|
||||
metafile: false,
|
||||
core: false,
|
||||
format: 'esm',
|
||||
includeLargeDiagrams: true,
|
||||
} as const;
|
||||
|
||||
const buildOptions = (override: BuildOptions): BuildOptions => {
|
||||
return {
|
||||
bundle: true,
|
||||
@@ -33,25 +41,38 @@ const buildOptions = (override: BuildOptions): BuildOptions => {
|
||||
};
|
||||
};
|
||||
|
||||
export const getBuildConfig = ({
|
||||
minify,
|
||||
core,
|
||||
entryName,
|
||||
metafile,
|
||||
format = 'esm',
|
||||
includeLargeDiagrams = true,
|
||||
}: MermaidBuildOptions): BuildOptions => {
|
||||
const getFileName = (
|
||||
fileName: string,
|
||||
{ core, format, includeLargeDiagrams, minify, entryName }: MermaidBuildOptions
|
||||
) => {
|
||||
if (core) {
|
||||
fileName += '.core';
|
||||
}
|
||||
if (format === 'esm') {
|
||||
fileName += '.esm';
|
||||
}
|
||||
if (!includeLargeDiagrams) {
|
||||
fileName += '.tiny';
|
||||
}
|
||||
if (minify) {
|
||||
fileName += '.min';
|
||||
}
|
||||
return fileName;
|
||||
};
|
||||
|
||||
export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => {
|
||||
const { core, entryName, metafile, format, includeLargeDiagrams } = options;
|
||||
const external: string[] = ['require', 'fs', 'path'];
|
||||
const { name, file, packageName } = packageOptions[entryName];
|
||||
const outFileName = getFileName(name, options);
|
||||
let output: BuildOptions = buildOptions({
|
||||
absWorkingDir: resolve(__dirname, `../packages/${packageName}`),
|
||||
entryPoints: {
|
||||
[`${name}${core ? '.core' : format === 'iife' ? '' : '.esm'}${
|
||||
includeLargeDiagrams ? '' : '.tiny'
|
||||
}${minify ? '.min' : ''}`]: `src/${file}`,
|
||||
[outFileName]: `src/${file}`,
|
||||
},
|
||||
metafile,
|
||||
logLevel: 'info',
|
||||
chunkNames: `chunks/${outFileName}/[name]-[hash]`,
|
||||
define: {
|
||||
// This needs to be stringified for esbuild
|
||||
includeLargeDiagrams: `${includeLargeDiagrams}`,
|
||||
|
Reference in New Issue
Block a user