Thanks Gary. Yeah, moving :cljsbuild to the :dev profile works. I still have to manually run cljsbuild though, which is annoying on my local machine and I suspect it would break things like deploying to Heroku or Cloud Foundry. So this will do for now but I'm still looking for a better solution in the long run.
On 9 June 2014 11:30, Gary Trakhman <gary.trakh...@gmail.com> wrote: > I don't think leiningen will ever do this, it might be a cleaner hack if > you move the cljsbuild plugin into the dev profile too. > > > On Monday, June 9, 2014, Chris Jenkins <cdpjenk...@gmail.com> wrote: > >> Actually, putting Clojurescript and any Clojurescript libraries into :dev >> dependencies doesn't quite work in a trouble-free way because it still >> breaks the Clojurescript compilation step in some circumstances. If I do >> the following: >> >> lein clean >> lein uberjar (or lein ring uberwar) >> >> .. then the following error is seen: >> >> Compiling "resources/public/js/script.js" failed. >> clojure.lang.ExceptionInfo: Could not locate hiccups/core__init.class or >> hiccups/core.clj on classpath: at line 1 {:tag :cljs/analysis-error, >> :file nil, :line 1, :column 1} >> at clojure.core$ex_info.invoke(core.clj:4327) >> <snip> >> >> I guess lein cljsbuild is trying to build the .cljs source into .js >> (because lein clean has removed all the generated .js files) but it can't >> see any Clojurescript dependencies because the :dev profile isn't active. >> >> I can run >> >> lein with-profile dev uberjar >> >> ... which allows lein cljsbuild to see the Clojurescript dependencies, >> but then puts Clojurescript and all its dependencies into the resulting >> uberjar (which is what I was trying to avoid). >> >> The best way I've found to work round this is always to run lein >> cljsbuild once before running lein uberjar. That gives me an uberjar that >> does not contain the Clojurescript compiler (nor its dependencies) but it >> seems like a bit of a hack to have to do this. Indeed, as far as I >> understand it, using the :dev profile in the manner that I am doing seems >> like a bit of a hack. >> >> In the long term, a solution might be for Leiningen to differentiate >> between Clojurescript and Clojure dependencies and to treat them >> differently. Does that sound like it might be sensible? >> >> >> >> On 9 June 2014 00:31, Chris Jenkins <cdpjenk...@gmail.com> wrote: >> >> Thanks Gary. That fixed it once I realised that another library, >> cljs-ajax, was also pulling in clojurescript. After moving clojurescript, >> hiccups and cljs-alax into the :dev dependencies, I can now run the app or >> create an uberjar or uberwar and it doesn't pull in Clojurescript's >> dependencies. >> >> >> >> On 9 June 2014 00:00, Gary Trakhman <gary.trakh...@gmail.com> wrote: >> >> Well, like I mentioned, you can wrap dev-specific dependencies into a >> :dev profile. >> >> :profiles {:dev {:dependencies {[[org.clojure/clojurescript "Blah"] >> [hiccups "hiccups-version"]}}} >> >> they will get merged in when the dev profile is active, but won't end up >> in artifacts. You could put your :cljsbuild settings in there too, but >> there's no harm in leaving it top-level. >> >> https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md >> >> >> On Sun, Jun 8, 2014 at 6:52 PM, Chris Jenkins <cdpjenk...@gmail.com> >> wrote: >> >> If I remove clojurescript from my :dependencies in project.clj, two >> things happen: >> >> 1) When I run lein cljsbuild, it complains and says: >> >> "WARNING: It appears your project does not contain a ClojureScript >> dependency. One will be provided for you by lein-cljsbuild ...<snip>" - >> lein-cljsbuild seems to be saying that I *do* need to specify a dependency >> on Clojurescript. Is this correct? >> >> 2) My app depends on hiccups 0.3.0, which in turn pulls in clojurescript >> 0.0-2069 This is slightly earlier than the level that I just removed from >> my dependencies... but I still don't really want that dependency to be >> there. Is hiccups doing the wrong thing here? >> >> So I still have the same question really: Whether I'm writing an app or a >> library, how can I depend upon Clojurescript in such a way that I can run >> lein cljsbuild at dev time and generate some .js files, and such that, at >> run time, my server-side Clojure code can then forget that Clojurescript >> even exists (and certainly not depend upon the Clojurescript compiler)? >> >> >> >> On 8 June 2014 23:40, Gary Trakhman <gary.trakh...@gmail.com> wrote: >> >> Clojurescript libs shouldn't specify a Clojurescript dependency (I think). >> >> You can perhaps separate the clojurescript part of your app into a >> separate project or lein profile. >> >> There are other issues that can come about by mixing and matching JVM + >> CLJS deps, one nasty one I hit is a tools.reader incompatibility. CLJS >> itself is sensitive to tools.reader versions, and it took an hour or so to >> debug. >> >> >> On Sun, Jun 8, 2014 at 5:58 PM, Chris Jenkins <cdpjenk...@gmail.com> >> wrote: >> >> Hi, >> >> I notice that if my project.clj specifies a dependency on Clojurescript >> (or on a Clojurescript library which in turn pulls in Clojurescript), this >> causes my project to have a dependency on the Google Closure compiler and >> all of its dependencies. If I understand this correctly, it means that >> stuff like Guava and FindBugs is on the classpath of my application at >> runtime and those libraries are >> >> -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescript@googlegroups.com. > Visit this group at http://groups.google.com/group/clojurescript. > -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript.