The boot cljs compiler task solves these problems:
https://github.com/adzerk/boot-cljs#preamble-externs-and-lib-files

On Thursday, November 13, 2014 11:18:18 AM UTC-5, Paul Bostrom wrote:
> "remove the need to rely on :preamble for non closure dependencies."
> I took a stab at solving this problem with a lein plugin:
> https://github.com/pbostrom/lein-cljsasset
> It would be simple to expand to support an :externs field. Then the workflow 
> would be that libraries declare the externs path in their project.clj, and 
> users declare the target externs file in their environment, which they would 
> then specify in their cljsbuild config. I'll admit it sounds a bit cumbersome 
> still, and the whole workflow should probably be managed by a single tool. 
> Just thinking out loud, the ideal tool would:
> 1) Resolve JS/CSS dependencies from classpath and concat (and minify?) to a 
> single file for each
> 2) Resolve externs dependencies from classpath
> 3) Advanced compile all CLJS/Closure dependencies and CLJS application code 
> with externs file(s) from step 2
> 4) Generate initialization/loading JS to load the JS/CSS files from step 1
> 5) Output a single JS file that initializes and loads your application
> 
> There would probably need to be another step in there which resolves image 
> dependencies.
> 
> On Monday, November 10, 2014 8:29:30 AM UTC-5, Julien Eluard wrote:
> > I agree this would be a really great feature.
> > 
> > 
> > There used to be a similar facility part of lein-cljsbuild allowing to 
> > package both the externs and eventual JS dependencies (see [1]) but it does 
> > not work anymore.
> > 
> > 
> > Maybe something equivalent could be part of the clojurescript compiler? 
> > There already are some projects packaging externs and JS files (see [2]) so 
> > it would be a matter of defining a convention. It could also be an 
> > opportunity to remove the need to rely on :preamble for non closure 
> > dependencies.
> > 
> > 
> > This would allow the creation of self-contained libraries and would greatly 
> > lower the barrier of using clojurescript libraries with dependencies.
> > 
> > 
> > [1] https://github.com/jeluard/cljs-ol3js/tree/master/resources/closure-js
> > [2] https://github.com/swannodette/react-cljs/tree/master/src/react
> > 
> > 
> > 
> > 
> > 2014-11-10 8:37 GMT-03:00 Nikita Prokopov <[email protected]>:
> > Hi!
> > 
> > 
> > 
> > Right now lein-cljsbuild allows for externs to be specified on user side. 
> > E.g. I’m building app with react-cljs, I add dependency, but there’s also a 
> > second step: I need to put :externs ["react/externs/react.js"] into _my_ 
> > project.clj.
> > 
> > 
> > 
> > This is tedious and easy to forget, leading to a lot of confusion (I 
> > developed for 2 month and everything was fine, then I turn on advanced 
> > build and nothing works).
> > 
> > 
> > 
> > On the other hand, conceptually, externs are part of a library, not my user 
> > code. So, if library author thinks his library needs externs, he specifies 
> > it and packs externs along with library code, and they’re automatically 
> > used when I add dependency. So as a user I don’t manage external deps’ 
> > externs at all. As Thomas Heller puts it, it might be [a quality of life 
> > change](https://github.com/tonsky/datascript/issues/30#issuecomment-62253696).
> > 
> > 
> > 
> > Any thought on it? Maybe there’s already a way to do that?
> > 
> > 
> > 
> > Nikita.
> > 
> > 
> > 
> > --
> > 
> > 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 [email protected].
> > 
> > To post to this group, send email to [email protected].
> > 
> > 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to