diff --git a/package.json b/package.json
index f368966711..bb8094ec10 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/public/index.html b/public/index.html
index 3aca92f98a..92fceb7b14 100644
--- a/public/index.html
+++ b/public/index.html
@@ -55,7 +55,7 @@
-
+
diff --git a/resources/index.html b/resources/index.html
index cb4340fa8d..c4db3df2c5 100644
--- a/resources/index.html
+++ b/resources/index.html
@@ -54,7 +54,7 @@ const portal = new MagicPortal(worker);
-
+
diff --git a/shadow-cljs.edn b/shadow-cljs.edn
index a36e405798..71fff4fd70 100644
--- a/shadow-cljs.edn
+++ b/shadow-cljs.edn
@@ -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"
diff --git a/webpack.config.js b/webpack.config.js
index 004b45c92d..fae31afa6e 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -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,
},