]> BookStack Code Mirror - bookstack/blob - dev/build/esbuild.js
20193db7fa94e7a9210d9cef1065d85ac7a691cf
[bookstack] / dev / build / esbuild.js
1 #!/usr/bin/env node
2
3 const esbuild = require('esbuild');
4 const path = require('path');
5 const fs = require('fs');
6
7 // Check if we're building for production
8 // (Set via passing `production` as first argument)
9 const isProd = process.argv[2] === 'production';
10
11 // Gather our input files
12 const entryPoints = {
13     app: path.join(__dirname, '../../resources/js/app.js'),
14     code: path.join(__dirname, '../../resources/js/code/index.mjs'),
15     'legacy-modes': path.join(__dirname, '../../resources/js/code/legacy-modes.mjs'),
16     markdown: path.join(__dirname, '../../resources/js/markdown/index.mjs'),
17     wysiwyg: path.join(__dirname, '../../resources/js/wysiwyg/index.mjs'),
18 };
19
20 // Locate our output directory
21 const outdir = path.join(__dirname, '../../public/dist');
22
23 // Build via esbuild
24 esbuild.build({
25     bundle: true,
26     metafile: true,
27     entryPoints,
28     outdir,
29     sourcemap: true,
30     target: 'es2021',
31     mainFields: ['module', 'main'],
32     format: 'esm',
33     minify: isProd,
34     logLevel: 'info',
35     banner: {
36         js: '// See the "/licenses" URI for full package license details',
37         css: '/* See the "/licenses" URI for full package license details */',
38     },
39 }).then(result => {
40     fs.writeFileSync('esbuild-meta.json', JSON.stringify(result.metafile));
41 }).catch(() => process.exit(1));