chore: Split chunks into folders

This commit is contained in:
Sidharth Vinod
2023-08-14 08:14:43 +05:30
parent 5f3c4fccaf
commit a1541aa6f5
2 changed files with 70 additions and 44 deletions

View File

@@ -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}`,