separate :workers build

This commit is contained in:
Tienson Qin
2025-03-10 17:20:39 +08:00
parent 849ffd3329
commit b122d453c2
5 changed files with 57 additions and 24 deletions

View File

@@ -65,10 +65,10 @@
"gulp:build": "cross-env NODE_ENV=production gulp build",
"css:build": "postcss tailwind.all.css -o static/css/style.css --verbose --env production",
"css:watch": "cross-env TAILWIND_MODE=watch postcss tailwind.all.css -o static/css/style.css --verbose --watch",
"cljs:watch": "clojure -M:cljs watch app electron",
"cljs:watch": "clojure -M:cljs watch app workers electron",
"cljs:watch-storybook": "clojure -M:cljs watch stories-dev",
"cljs:app-watch": "clojure -M:cljs watch app",
"cljs:electron-watch": "clojure -M:cljs watch app electron --config-merge \"{:asset-path \\\"./js\\\"}\"",
"cljs:app-watch": "clojure -M:cljs watch app workers",
"cljs:electron-watch": "clojure -M:cljs watch app workers electron --config-merge \"{:asset-path \\\"./js\\\"}\"",
"cljs:release": "clojure -M:cljs release app publishing electron",
"cljs:release-electron": "clojure -M:cljs release app electron --debug && clojure -M:cljs release publishing",
"cljs:release-app": "clojure -M:cljs release app",

View File

@@ -55,7 +55,7 @@
<script defer src="/static/js/lsplugin.core.js"></script>
<script defer src="/static/js/react.production.min.js"></script>
<script defer src="/static/js/react-dom.production.min.js"></script>
<script defer src="/static/js/libs/bundle.js"></script>
<script defer src="/static/js/libs/main-bundle.js"></script>
<script defer src="/static/js/ui.js"></script>
<script defer src="/static/js/shared.js"></script>
<script defer src="/static/js/main.js"></script>

View File

@@ -54,7 +54,7 @@ const portal = new MagicPortal(worker);
<script defer src="./js/lsplugin.core.js"></script>
<script defer src="./js/react.production.min.js"></script>
<script defer src="./js/react-dom.production.min.js"></script>
<script defer src="./js/libs/bundle.js"></script>
<script defer src="./js/libs/main-bundle.js"></script>
<script defer src="./js/ui.js"></script>
<script defer src="./js/shared.js"></script>
<script defer src="./js/main.js"></script>

View File

@@ -12,7 +12,7 @@
{:app {:target :browser
:module-loader true
:js-options {:js-provider :external
:external-index "target/index.js"
:external-index "target/main.js"
:external-index-format :esm
:entry-keys ["module" "browser" "main"]
:export-conditions ["module" "import", "browser" "require" "default"]
@@ -34,17 +34,7 @@
:depends-on #{:main}}
:tldraw
{:entries [frontend.extensions.tldraw]
:depends-on #{:main}}
:db-worker
{:init-fn frontend.worker.db-worker/init
:depends-on #{:shared}
:web-worker true
:prepend "importScripts('libs/bundle.js');\n"}
:inference-worker
{:init-fn frontend.inference-worker.inference-worker/init
:depends-on #{:shared}
:web-worker true
:prepend "importScripts('libs/bundle.js');\n"}}
:depends-on #{:main}}}
:output-dir "./static/js"
:asset-path "/static/js"
@@ -77,6 +67,49 @@
:preloads [devtools.preload
shadow.remote.runtime.cljs.browser]}}
:workers {:target :browser
:module-loader true
:js-options {:js-provider :external
:external-index "target/workers.js"
:external-index-format :esm
:entry-keys ["module" "browser" "main"]
:export-conditions ["module" "import", "browser" "require" "default"]}
:modules {:shared
{:entries []}
:db-worker
{:init-fn frontend.worker.db-worker/init
:depends-on #{:shared}
:web-worker true
:prepend "importScripts('libs/workers-bundle.js');\n"}
:inference-worker
{:init-fn frontend.inference-worker.inference-worker/init
:depends-on #{:shared}
:web-worker true
:prepend "importScripts('libs/workers-bundle.js');\n"}}
:output-dir "./static/js"
:asset-path "/static/js"
:release {:asset-path "https://asset.logseq.com/static/js"}
:compiler-options {:infer-externs :auto
:output-feature-set :es-next-in
:source-map true
:externs ["datascript/externs.js"
"externs.js"]
:warnings {:fn-deprecated false
:redef false}
:cross-chunk-method-motion false}
:closure-defines {goog.debug.LOGGING_ENABLED true}
;; NOTE: electron, browser/mobile-app use different asset-paths.
;; For browser/mobile-app devs, assets are located in /static/js(via HTTP root).
;; For electron devs, assets are located in ./js(via relative path).
;; :dev {:asset-path "./js"}
:devtools {:before-load frontend.core/stop ;; before live-reloading any code call this function
:after-load frontend.core/start ;; after live-reloading finishes call this function
:watch-path "/static"
:preloads [devtools.preload
shadow.remote.runtime.cljs.browser]}}
:electron {:target :node-script
:output-to "static/electron.js"
:main electron.core/main
@@ -137,11 +170,7 @@
:depends-on #{:main}}
:tldraw
{:entries [frontend.extensions.tldraw]
:depends-on #{:main}}
:db-worker
{:init-fn frontend.worker.db-worker/init
:depends-on #{:shared}
:web-worker true}}
:depends-on #{:main}}}
:output-dir "./static/js/publishing"
:asset-path "static/js"

View File

@@ -3,10 +3,14 @@ const webpack = require('webpack');
module.exports = {
mode: "development",
entry: './target/index.js',
entry: {
main : "./target/main.js",
workers : "./target/workers.js"
},
output: {
path: path.resolve(__dirname, 'static/js/libs'),
filename: 'bundle.js',
filename: '[name]-bundle.js',
clean: true,
chunkLoading: false,
},