;; Two builds and no more: ;; ;; app the tool. Output goes straight into the Django staticfiles tree, so ;; `python manage.py runserver` and `shadow-cljs watch app` are the whole ;; dev loop with nothing copying files between them. ;; test :node-test, because everything below `ui/` and `fx/` is pure and has ;; no business needing a browser to be asserted about. The canvas-facing ;; parts get asserted through domain/raster's byte buffer instead, which ;; is what the JS selftest already did. {:source-paths ["src" "test"] :dependencies [[reagent "1.2.0"] [re-frame "1.4.3"]] ;; Dev server for the CLJS half, on a different port from serve.py (8777) so the ;; old tool and the port can run side by side — which is the whole point of ;; keeping js/ around as the numeric oracle. ;; ;; Two roots: `public` holds the host page, `..` is the repo root so the bundle ;; at /static/arthur/js/ resolves, and so manifest.json, audio.wav and frames/ ;; are reachable when step 6 needs real footage. ;; ;; THE ORDER IS LOAD-BEARING. The repo root has an index.html too — the old ;; tool's — so with `..` first, /index.html would quietly serve the prototype ;; instead of the port. That would look like the CLJS build having regressed to ;; a suspiciously complete tool rather than like a misconfigured server. ;; ;; Open /index.html, not /. This shadow-cljs does no directory-index resolution, ;; so bare / is a 404 whatever the roots are. Django serves the page from step 9 ;; and this whole key goes away. :dev-http {8778 ["public" ".."]} :builds {:app {:target :browser :output-dir "../static/arthur/js" :asset-path "/static/arthur/js" :modules {:main {:init-fn arthur.core/init}}} :test {:target :node-test :output-to "out/node-tests.js" :ns-regexp "-test$"}}}