X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/5d2aad6a9e0675dc10c187c8c6c90294f47f22f7..refs/pull/5280/head:/dev/build/esbuild.js diff --git a/dev/build/esbuild.js b/dev/build/esbuild.js index 46357038a..fea8c01e3 100644 --- a/dev/build/esbuild.js +++ b/dev/build/esbuild.js @@ -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.js'), + 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));