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, },