Alternatively, if I follow instructions from https://github.com/adzerk/boot-cljs-example ,
then there's no mention of target/index.html, so I directly jump to http://localhost:3000/ but I get an HTTP 404, so same problem there I think. command is different than from the blog post: $ boot serve -d target/ watch speak cljs-repl cljs -usO none reload Retrieving ring-jetty-adapter-1.3.1.jar from http://clojars.org/repo/ Retrieving ring-core-1.3.1.jar from http://clojars.org/repo/ Retrieving clj-time-0.6.0.jar from http://clojars.org/repo/ Retrieving crypto-random-1.2.0.jar from http://clojars.org/repo/ Retrieving crypto-equality-1.0.0.jar from http://clojars.org/repo/ Retrieving ring-servlet-1.3.1.jar from http://clojars.org/repo/ Retrieving compojure-1.2.1.jar from http://clojars.org/repo/ Retrieving clout-2.0.0.jar from http://clojars.org/repo/ Retrieving instaparse-1.3.4.jar from http://clojars.org/repo/ Retrieving medley-0.5.3.jar from http://clojars.org/repo/ Retrieving ring-codec-1.0.0.jar from http://clojars.org/repo/ Retrieving tools.reader-0.8.1.jar from http://repo1.maven.org/maven2/ Retrieving commons-fileupload-1.3.jar from http://repo1.maven.org/maven2/ Retrieving jetty-server-7.6.13.v20130916.jar from http://repo1.maven.org/maven2/ Retrieving javax.servlet-2.5.0.v201103041518.jar from http://repo1.maven.org/maven2/ Retrieving joda-time-2.2.jar from http://repo1.maven.org/maven2/ Retrieving jetty-continuation-7.6.13.v20130916.jar from http://repo1.maven.org/maven2/ Retrieving jetty-http-7.6.13.v20130916.jar from http://repo1.maven.org/maven2/ Retrieving jetty-io-7.6.13.v20130916.jar from http://repo1.maven.org/maven2/ Retrieving jetty-util-7.6.13.v20130916.jar from http://repo1.maven.org/maven2/ Retrieving tools.macro-0.1.5.jar from http://repo1.maven.org/maven2/ Retrieving commons-codec-1.6.jar from http://repo1.maven.org/maven2/ << started reload server on ws://localhost:8090 >> 2014-11-05 22:59:51.865:INFO:oejs.Server:jetty-7.6.13.v20130916 2014-11-05 22:59:51.928:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:3000 << started web server on http://localhost:3000 (serving: target/) >> Starting file watcher (CTRL-C to quit)... nREPL server listening: 0.0.0.0:50475 Compiling main.js... Adding <script> tags to html... Elapsed time: 21,374 sec 2014-11-05 22:42 GMT+01:00 Laurent PETIT <laurent.pe...@gmail.com>: > Thanks Micha for the detailed explanation ! > > I started following the cljs example, but am stuck right after having > launched the first boot command: I don't see file target/index.html > > The command and output look like this (launched from the boot-cljs-example > folder): > > $ boot watch speak cljs-repl cljs -usO none reload > Retrieving tagsoup-1.2.1.jar from http://clojars.org/repo/ > Retrieving enlive-1.1.5.jar from http://clojars.org/repo/ > Retrieving jsoup-1.7.2.jar from http://repo1.maven.org/maven2/ > Retrieving args4j-2.0.16.jar from http://repo1.maven.org/maven2/ > Retrieving protobuf-java-2.4.1.jar from http://repo1.maven.org/maven2/ > Retrieving clojurescript-0.0-2080.jar from http://repo1.maven.org/maven2/ > Retrieving closure-compiler-v20130603.jar from > http://repo1.maven.org/maven2/ > Retrieving google-closure-library-0.0-20130212-95c19e7f0f5f.jar from > http://repo1.maven.org/maven2/ > Retrieving > google-closure-library-third-party-0.0-20130212-95c19e7f0f5f.jar from > http://repo1.maven.org/maven2/ > Retrieving tools.reader-0.8.0.jar from http://repo1.maven.org/maven2/ > << started reload server on ws://localhost:8090 >> > Starting file watcher (CTRL-C to quit)... > > nREPL server listening: 0.0.0.0:50352 > Compiling main.js... > Adding <script> tags to html... > Elapsed time: 21,489 sec > > > > 2014-11-05 1:59 GMT+01:00 Micha Niskin <micha.nis...@gmail.com>: > >> Hi, sorry for the late reply! Boot pretty much takes care of that part >> for you, as long as you follow a few basic rules (I will be adding a “how >> to be a good citizen of the boot-o-sphere” section to the wiki on github >> soon): >> >> 1. >> >> Tasks don’t fish around in the filesystem directly to find things to >> compile or otherwise operate on. Instead, tasks use functions in >> boot.core that return immutable sets of java.io.File objects from >> boot-managed temp directories. These functions present a sort of overlay >> filesystem with files in anonymous temporary directories. This allows >> tasks >> to be completely decoupled from the filesystem layout. Additionally, this >> makes it possible for boot to shuffle files around and use hardlinks and >> such to craft the classpath and the build fileset in different ways during >> the build cycle. In this way boot can emulate immutability and lexical and >> dynamic scope for things on the filesystem. >> 2. >> >> Tasks don’t create files in the filesystem directly. Instead, tasks >> use functions in boot.core that create various flavors of anonymous, >> boot-managed temp directories (the ones mentioned in item 1, in fact). An >> important concept in boot is that the output of any task is part of the >> input for the next task in the pipeline. This is the property that >> supports >> the amazing composition of tasks that is possible with boot, without >> needing to generate miles of boilerplate configuration. >> 3. >> >> The boot-managed temp directory lifespan is one build session only. >> This means one JVM, basically. The temp directories are stored in the >> .boot directory in the project root. The next time you run boot it >> cleans out any old temp dirs in there (they are not cleaned up on exit >> because you may want to look in them if something goes wrong with the >> build; stack traces could be referencing source files in these temp dirs). >> 4. >> >> The only directories that boot knows about that are not temp dirs it >> created are the ones you specify in the build.boot file via set-env! >> (i.e. the :src-paths, :rsc-paths, and :tgt-path keys). The source and >> resource paths are not molested by boot in any way (no files in there are >> ever deleted, moved, modified etc.). The target directory, on the other >> hand, is completely owned by boot—boot will overwrite files or delete them >> in there as it sees fit. Boot ensures that the target directory always >> contains only those files the build process emits for that specific run, >> and doesn’t allow any stale files to hang out in there. >> >> What this all means is that there is something of a tradeoff: boot never >> persists files that could become stale, so there is no need for a clean >> task, but on the other hand some things then need to be rebuilt instead of >> just hanging out in the target dir. We think this is an okay tradeoff >> because boot’s composition capabilities make it really easy to >> incrementally run any build process at all using the built-in watch >> task. In return you get 100% deterministic builds. >> >> We’ll be talking about the details of the whole temporary filesystem >> machinery soon. Have fun playing with boot! >> >> >> -- >> Micha Niskin >> >> On Mon, Nov 3, 2014 at 5:45 PM, Laurent PETIT <laurent.pe...@gmail.com> >> wrote: >> >>> And more seriously, I remember reading that you put an emphasis on >>> removing the need to use a clean task. >>> If I'm right, then I'd be interested in knowing how one is encouraged / >>> helped to pursue this good property in its own tasks ? >>> >>> Le lundi 3 novembre 2014, Laurent PETIT <laurent.pe...@gmail.com> a >>> écrit : >>> >>> Tongue in cheek question: if Leiningen were the maven of clojure, would >>>> you say boot2 is gradle ? :-) >>>> >>>> Le lundi 3 novembre 2014, Micha Niskin <micha.nis...@gmail.com> a >>>> écrit : >>>> >>>>> Hi! >>>>> >>>>> Boot (http://github.com/boot-clj/boot) is a build tool for Clojure. >>>>> We've pulled together lessons learned from a year or so using boot v1 in >>>>> production and are now getting ready to release v2. To show what boot can >>>>> do we present a very streamlined and awesome boot-based ClojureScript >>>>> development workflow ( >>>>> http://adzerk.com/blog/2014/11/clojurescript-builds-rebooted/). >>>>> >>>>> Try it out, maybe you'll like it! We're hoping to get some feedback >>>>> before committing to a stable release, so please if you have any comments >>>>> or questions we'd be happy to hear them. Have fun! >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To post to this group, send email to clojure@googlegroups.com >>>>> Note that posts from new members are moderated - please be patient >>>>> with your first post. >>>>> To unsubscribe from this group, send email to >>>>> clojure+unsubscr...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/clojure?hl=en >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to clojure+unsubscr...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> -- >>>> Laurent Petit >>>> >>>> >>> >>> -- >>> Laurent Petit >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clojure@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "Clojure" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/clojure/YAckwMSfZkY/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Laurent Petit > -- Laurent Petit -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.