]> BookStack Code Mirror - bookstack/blobdiff - dev/build/esbuild.js
Opensearch: Fixed XML declaration when php short tags enabled
[bookstack] / dev / build / esbuild.js
index 46357038a23c082e4d472c072911afe14833f60e..cd8bf279f28db0858cbd3c238ea029d4582d107d 100644 (file)
@@ -1,32 +1,50 @@
 #!/usr/bin/env node
 
 const esbuild = require('esbuild');
-const fs = require('fs');
 const path = require('path');
+const fs = require('fs');
 
 // Check if we're building for production
 // (Set via passing `production` as first argument)
 const isProd = process.argv[2] === 'production';
 
 // Gather our input files
-const jsInDir = path.join(__dirname, '../../resources/js');
-const jsInDirFiles = fs.readdirSync(jsInDir, 'utf8');
-const entryFiles = jsInDirFiles
-    .filter(f => f.endsWith('.js') || f.endsWith('.mjs'))
-    .map(f => path.join(jsInDir, f));
+const entryPoints = {
+    app: path.join(__dirname, '../../resources/js/app.ts'),
+    code: path.join(__dirname, '../../resources/js/code/index.mjs'),
+    'legacy-modes': path.join(__dirname, '../../resources/js/code/legacy-modes.mjs'),
+    markdown: path.join(__dirname, '../../resources/js/markdown/index.mjs'),
+    wysiwyg: path.join(__dirname, '../../resources/js/wysiwyg/index.ts'),
+};
 
 // Locate our output directory
-const outDir = path.join(__dirname, '../../public/dist');
+const outdir = path.join(__dirname, '../../public/dist');
 
 // Build via esbuild
 esbuild.build({
     bundle: true,
-    entryPoints: entryFiles,
-    outdir: outDir,
+    metafile: true,
+    entryPoints,
+    outdir,
     sourcemap: true,
-    target: 'es2020',
+    target: 'es2021',
     mainFields: ['module', 'main'],
     format: 'esm',
     minify: isProd,
-    logLevel: "info",
-}).catch(() => process.exit(1));
\ No newline at end of file
+    logLevel: 'info',
+    loader: {
+        '.svg': 'text',
+    },
+    absWorkingDir: path.join(__dirname, '../..'),
+    alias: {
+        '@icons': './resources/icons',
+        lexical: './resources/js/wysiwyg/lexical/core',
+        '@lexical': './resources/js/wysiwyg/lexical',
+    },
+    banner: {
+        js: '// See the "/licenses" URI for full package license details',
+        css: '/* See the "/licenses" URI for full package license details */',
+    },
+}).then(result => {
+    fs.writeFileSync('esbuild-meta.json', JSON.stringify(result.metafile));
+}).catch(() => process.exit(1));