Skip to content
This repository has been archived by the owner on Jul 2, 2022. It is now read-only.

Better document (possibly restructure) cljsbuilds #177

Open
plexus opened this issue Aug 12, 2016 · 1 comment
Open

Better document (possibly restructure) cljsbuilds #177

plexus opened this issue Aug 12, 2016 · 1 comment

Comments

@plexus
Copy link
Owner

plexus commented Aug 12, 2016

This came up after some questions on Clojurians Slack, there are some things which can be counterintuitive when using cljsbuild directly

  • running lein cljsbuild once blows up

The reason is it tries to compile all three builds (app, test, min), and the test build doesn't have doo.runner available, and so blows up.

This is solvable in the sense that it no longer explodes, just add doo as a dev dependency (and not just a plugin), but in a way it's actually good that lein cjlsbuild once blows up because both "app" and "min" target the same output file, so it's not clear what the result should be.

  • lein cljsbuild once min doesn't work when an app build is already present and vice versa

That is to say, it doesn't overwrite the output file, which it should do, so you end up with a non-optimized file when you want it optimized or vice versa. This is a thorny one because it can be a pain to figure out what's going on.

Possible solutions:

  • add some leiningen hook to remove the target file before compilation
  • use different target names for "app" and "min", this means adding more complexity to switch to the right one, while now we can just serve one index.html for both.
@benzap
Copy link

benzap commented May 31, 2017

Another solution might be to incorporate some aliases within the project.clj, and document them in the README when dealing with production workflow

ie.

:aliases {"build-cljs" ["cljsbuild" "once" "min"]
             "build-garden" ["run" "-m" "garden-watcher.main" "website.styles"]
             "watch-cljs" ["cljsbuild" "auto" "app"]
             "test-cljs" ["do" ["cljsbuild" "once" "test"] ["doo"]] ;; bad example, super slow
             "build" ["do" ["build-cljs"] ["build-garden"]]}

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants