mirror of
https://github.com/enso-org/enso.git
synced 2024-12-11 14:35:56 +03:00
74527eaa8f
* Extract SVGs to individual files Probably not working for cloud frontend (`watch-dashboard`, `build-dashboard`) yet Dynamic SVGs were not extracted out * Make file SVGs work for `watch-dashboard` and `build-dashboard` * Document SVG loaders * Address QA issues
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
/** @file Entry point for the bundler. */
|
|
import * as fs from 'node:fs/promises'
|
|
import * as path from 'node:path'
|
|
import * as url from 'node:url'
|
|
|
|
import * as esbuild from 'esbuild'
|
|
|
|
import * as bundler from './esbuild-config'
|
|
|
|
// =================
|
|
// === Constants ===
|
|
// =================
|
|
|
|
export const THIS_PATH = path.resolve(path.dirname(url.fileURLToPath(import.meta.url)))
|
|
|
|
// ===============
|
|
// === Bundler ===
|
|
// ===============
|
|
|
|
/** Clean up old build output and runs the esbuild bundler. */
|
|
async function bundle() {
|
|
try {
|
|
try {
|
|
await fs.rm('./build', { recursive: true })
|
|
} catch {
|
|
// Ignored.
|
|
}
|
|
const opts = bundler.bundlerOptions({
|
|
outputPath: './build',
|
|
devMode: false,
|
|
})
|
|
opts.entryPoints.push(
|
|
path.resolve(THIS_PATH, 'src', 'index.html'),
|
|
path.resolve(THIS_PATH, 'src', 'index.tsx')
|
|
)
|
|
opts.loader['.html'] = 'copy'
|
|
await esbuild.build(opts)
|
|
return
|
|
} catch (error) {
|
|
console.error(error)
|
|
// The error is being re-thrown.
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
throw error
|
|
}
|
|
}
|
|
|
|
void bundle()
|