penpot/exporter/shadow-cljs.edn
2026-07-28 09:09:23 +02:00

68 lines
1.8 KiB
Clojure

{:deps {:aliases [:dev]}
:source-paths ["src" "vendor" "../common"]
:builds
{:main
{:target :esm
:runtime :node
:output-dir "target/"
:devtools {:before-load-async app.core/stop
:after-load app.core/start}
:modules
{:app
{:entries []
:init-fn app.core/main}}
:js-options
{:entry-keys ["module" "browser" "main"]
:export-conditions ["module" "import", "browser" "require" "default"]
:js-provider :import}
:compiler-options
{:output-feature-set :es2020
:output-wrapper false}
:release
{:compiler-options
{:fn-invoke-direct true
:source-map true
:optimizations #shadow/env ["PENPOT_BUILD_OPTIMIZATIONS" :as :keyword :default :simple]
:pseudo-names true
:pretty-print true
:anon-fn-naming-policy :off
:source-map-detail-level :all}}}
;; Headless render worker (see app.wasm.pool). A separate build rather than a
;; second module of :main, so the bundle node loads through `new Worker(path)`
;; is self-contained — code splitting would leave it importing shared chunks
;; relative to a different base. Its own :output-dir for the same reason.
:wasm-worker
{:target :esm
:runtime :node
:output-dir "target/worker/"
:modules
{:wasm-worker
{:entries []
:init-fn app.wasm.worker/main}}
:js-options
{:entry-keys ["module" "browser" "main"]
:export-conditions ["module" "import", "browser" "require" "default"]
:js-provider :import}
:compiler-options
{:output-feature-set :es2020
:output-wrapper false}
:release
{:compiler-options
{:fn-invoke-direct true
:source-map true
:optimizations #shadow/env ["PENPOT_BUILD_OPTIMIZATIONS" :as :keyword :default :simple]
:pseudo-names true
:pretty-print true
:anon-fn-naming-policy :off
:source-map-detail-level :all}}}}}