mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-25 02:09:50 +02:00
Serve
This commit is contained in:
54
.esbuild/util.cjs
Normal file
54
.esbuild/util.cjs
Normal file
@@ -0,0 +1,54 @@
|
||||
/** @typedef {import('esbuild').BuildOptions} Options */
|
||||
|
||||
/**
|
||||
* @param {Options} override
|
||||
* @returns {Options}
|
||||
*/
|
||||
const buildOptions = (override = {}) => {
|
||||
return {
|
||||
bundle: true,
|
||||
minify: true,
|
||||
keepNames: true,
|
||||
globalName: 'mermaid',
|
||||
platform: 'browser',
|
||||
resolveExtensions: ['.js', '.json', '.jison'],
|
||||
external: ['require', 'fs', 'path'],
|
||||
entryPoints: ['src/mermaid.js'],
|
||||
outfile: 'dist/mermaid.min.js',
|
||||
plugins: [jisonPlugin],
|
||||
sourcemap: 'external',
|
||||
...override,
|
||||
};
|
||||
};
|
||||
|
||||
exports.esmBuild = ({ minify = true } = {}) => {
|
||||
return buildOptions({
|
||||
format: 'esm',
|
||||
outfile: `dist/mermaid.esm${minify ? '.min' : ''}.mjs`,
|
||||
minify,
|
||||
});
|
||||
};
|
||||
|
||||
exports.umdBuild = ({ minify = true } = {}) => {
|
||||
return buildOptions({ outfile: `dist/mermaid${minify ? '.min' : ''}.js`, minify });
|
||||
};
|
||||
|
||||
const jisonPlugin = {
|
||||
name: 'jison',
|
||||
setup(build) {
|
||||
const { Generator } = require('jison');
|
||||
let fs = require('fs');
|
||||
|
||||
build.onLoad({ filter: /\.jison$/ }, async (args) => {
|
||||
// Load the file from the file system
|
||||
let source = await fs.promises.readFile(args.path, 'utf8');
|
||||
|
||||
try {
|
||||
let contents = new Generator(source, {}).generate();
|
||||
return { contents, warnings: [] };
|
||||
} catch (e) {
|
||||
return { errors: [] };
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
Reference in New Issue
Block a user