Webjars doesn't package JS libs in a useful way for ClojureScript.

On Sunday, January 25, 2015, Ivan L <ivan.laza...@gmail.com> wrote:

> To this end I would hope everyone takes a look at using webjars.org as
> their source for frontend libraries.  imo, it's a way forward to dep mgmt
> outside of bower/npm/node etc.
>
> On Sunday, January 25, 2015 at 2:42:54 PM UTC-5, David Nolen wrote:
>>
>> I strongly recommend the Clojure(Script) community join forces when
>> packaging libraries to avoid duplicated effort and dependency conflicts.
>>
>> CLJSJS seems like a good initiative to me along these lines:
>> http://cljsjs.github.io
>>
>> David
>>
>> On Sun, Jan 25, 2015 at 1:49 PM, Vladimir Bokov <bokov...@gmail.com>
>> wrote:
>>
>>> Thanks David!
>>>
>>> I also already packaged https://github.com/razum2um/jquery-cljs using
>>> your react repo as example
>>>
>>> суббота, 24 января 2015 г., 21:10:29 UTC+6 пользователь David Nolen
>>> написал:
>>>
>>>> ClojureScript, the Clojure compiler that emits JavaScript source code.
>>>>
>>>> README and source code: https://github.com/clojure/clojurescript
>>>>
>>>> New release version: 0.0-2719
>>>>
>>>> Leiningen dependency information:
>>>>
>>>>     [org.clojure/clojurescript "0.0-2719"]
>>>>
>>>> ClojureScript is not an island, like Clojure on the JVM, ClojureScript
>>>> embraces the many benefits provided by the host. However this goal
>>>> has been hampered by another goal - the compilation stragey. Google
>>>> Closure Compiler offers superior optimization and minification for
>>>> ClojureScript while simultaneously making it considerably more
>>>> difficult to integrate non-Closure compatible libraries. Using popular
>>>> libraries like jQuery, React or D3 is an error prone process: "which
>>>> extern did I forget?", "which script tag did I miss for development?",
>>>> "are these script tags in dependency order?".
>>>>
>>>> No more. 0.0-2719 delivers full support for non-Closure compatible
>>>> libraries through some less known features that have been lurking
>>>> around for almost three years - `deps.cljs` and the :foreign-libs
>>>> compiler option.
>>>>
>>>> `deps.cljs` is a simple EDN file provided at the root of a JAR that
>>>> describes additional build information for the ClojureScript
>>>> compiler. For example here is the `deps.cljs` for the React JAR I
>>>> maintain:
>>>>
>>>> {
>>>>  :foreign-libs [{:file     "react/react.js"
>>>>                  :file-min "react/react.min.js"
>>>>                  :provides ["com.facebook.React"]}
>>>>                 {:file     "react/react_with_addons.js"
>>>>                  :file-min "react/react_with_addons.min.js"
>>>>                  :provides ["com.facebook.ReactWithAddons"]}]
>>>>  :externs ["react/externs/react.js"]
>>>> }
>>>>
>>>> This file provides all the information ClojureScript needs to
>>>> correctly manage the foreign dependency for you under all compilation
>>>> modes and REPLs.
>>>>
>>>> In a REPL:
>>>>
>>>>    cljs.user> (require 'com.facebook.React)
>>>>    cljs.user> (. js/React
>>>>                 (renderToString
>>>>                   (. js/React (DOM.div nil "Hello!"))))
>>>>
>>>> In your project:
>>>>
>>>>    (ns foo.bar
>>>>      (:require com.facebook.React))
>>>>
>>>>    (enable-console-print!)
>>>>
>>>>    (println
>>>>      (. js/React
>>>>        (renderToString
>>>>          (. js/React (DOM.div nil "Hello!")))))
>>>>
>>>> The above works under all compilation modes. There is no need to
>>>> include React as a script tag under development, there is no need to put
>>>> script tags in dependency order, there is no need to add React to
>>>> :preamble under :advanced, and there is no need to explicitly provide
>>>> :externs.
>>>>
>>>> All that is required is that JavaScript libraries be packaged in JARs
>>>> with a `deps.cljs`.
>>>>
>>>> Some of you might reasonably ask why not a tool like Bower for this
>>>> instead?  Bower requires an additional dependency on Node.js. While
>>>> ClojureScript embraces Node.js as a useful target it is not a
>>>> requirement to be productive. Bower manages dependencies, but in the
>>>> Clojure world we have already embraced Maven for this task and have
>>>> done the same for ClojureScript. Finally Bower does not address the
>>>> problem of loading libraries at runtime. This is challenging to do -
>>>> some JavaScript libraries adopt CommonJS, some AMD, and the most
>>>> popular ones make no assumptions at all allowing users to simply use
>>>> script tags as they have done for nearly two decades. The above
>>>> solution addresses the issue for all ClojureScript users by
>>>> eliminating paralysis of choice. Finally none of the above
>>>> precludes Bower usage in any way whatsoever.
>>>>
>>>> This new feature addresses a long outstanding pain point with
>>>> ClojureScript development. All that is required is that we take the
>>>> time to properly package up the most popular JavaScript libraries that
>>>> fill gaps not currently served by exising ClojureScript and Google
>>>> Closure Library functionality.
>>>>
>>>> Please kick the tires and feedback is most welcome. This feature
>>>> touched many bits of code so there are likely to be wrinkles and we want
>>>> to get these ironed out as quickly as possible.
>>>>
>>>> ## 0.0-2719
>>>>
>>>> ### Changes
>>>> * Full support for foreign dependencies
>>>> * CLJS-985: make ex-info not lose stack information
>>>> * CLJS-984: Update Node.js REPL support to use public API
>>>> * CLJS-963: do not bother computing goog/dep.js under :none
>>>>
>>>> ### Fixes
>>>> * CLJS-982: Var derefing should respect Clojure semantics
>>>> * CLJS-980: ClojureScript REPL stacktraces overrun prompt in many cases
>>>> * CLJS-979: ClojureScript REPL needs error handling for the special
>>>> functions
>>>> * CLJS-971: :reload should work for require-macros special fn
>>>> * CLJS-980: ClojureScript REPL stacktraces overrun prompt in many cases
>>>> * CLJS-979: ClojureScript REPL needs error handling for the special
>>>> functions
>>>> * CLJS-971: :reload should work for require-macros special fn
>>>> * CLJS-936: Multi arity bitwise operators
>>>> * CLJS-962: fix inconsistent hashing of empty collections
>>>>
>>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> 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
> <javascript:_e(%7B%7D,'cvml','clojurescript%2bunsubscr...@googlegroups.com');>
> .
> To post to this group, send email to clojurescr...@googlegroups.com
> <javascript:_e(%7B%7D,'cvml','clojurescr...@googlegroups.com');>.
> Visit this group at http://groups.google.com/group/clojurescript.
>

-- 
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.

Reply via email to