#!/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));