docbrown/esbuild.config.mjs
Mac Siri afa73e06e3
Replace Webpacker with Esbuild (#20470)
* Migrate to esbuild WIP

* Add exclude

* Remove redundant file

* Move file

* Move to javascript_include_tag

* Lint fix

* WIP

* WIP

* Add watch mode to esbuild WIP

* Get jest working

* Remove babel

* Revert "Remove babel"

This reverts commit 6da35260aa19d6f97f586deb66c0ecaf48433b73.

* More WIP

* Got image to load

* WIP

* Resolve audit

* Lint fix

* WIP

* Fix jest spec

* [CI] Remove asset-restore for test build stage

* Production compliant

* Temp disable sourcemap

* Update glob

* Add esbuild helper to stimulus

* Import fragment

* Temp disable coverage to see failing tests

* Fix broken spec

* Address lint

* Set proper es6 target

* Use esbuild for everything

* wait what

* Revert "Set proper es6 target"

This reverts commit 98f5278093421baa8ffe2ca580845b01c1a1eadf.

* Revert "Use esbuild for everything"

This reverts commit 0ac46738f07ffcb6af095ccb1ffa5e439b7fefa3.

* Replace uglifier with terser

* New compiled assets version

* Remvoe honeybadger-io/webpack

* Remove cypress coverage checks for now

* Update jsconfig.json

* Update docker-compose

* Remove public/packs-test from ci cache
2024-01-25 20:29:21 +00:00

39 lines
810 B
JavaScript

import * as esbuild from 'esbuild'
import glob from 'glob'
import svgr from 'esbuild-plugin-svgr'
import { stimulusPlugin } from 'esbuild-plugin-stimulus'
let ctx = {
loader: {
'.js': 'jsx',
'.jsx': 'jsx',
'.png': 'file',
},
target: ['es2019'],
entryPoints: glob.sync("app/javascript/packs/**/*.*"),
jsxFactory: 'h',
jsxFragment: 'Fragment',
bundle: true,
minify: true,
sourcemap: false,
outdir: 'app/assets/builds',
logLevel: 'info',
define: {
'global': 'window',
},
alias: {
'react': 'preact/compat',
'react-dom': 'preact/compat',
},
plugins: [
svgr({jsxRuntime: 'classic-preact' }),
stimulusPlugin(),
],
}
if (process.argv.includes('--watch')) {
ctx = await esbuild.context(ctx)
await ctx.watch()
} else {
await esbuild.build(ctx)
}