Foreign library dependencies - cljsjs/packages GitHub Wiki
Often JavaScript libraries depend on other libraries, for example when a library extends jQuery or builds on top of React. In these cases the dependencies should be declared as dependencies of the package:
Example:
(set-env!
:resource-paths #{"resources"}
:dependencies '[[cljsjs/boot-cljsjs "0.5.2" :scope "test"]
[cljsjs/react "15.0.0-0"]
[cljsjs/react-dom "15.0.0-0"]])
This ensures that the externs and foreign library declarations are available for the dependency libraries.
Additionally, when generating deps.cljs
with deps-cljs
one should declare :requires
to the foreign library namespaces which provide the required libraries:
(deps-cljs :name "cljsjs.react-numeric-input"
:requires ["cljsjs.react"
"cljsjs.react.dom"])
This ensures that the required foreign library code is evaluated before the library code, that is, window.React
is available when running React-numeric-input code.
When writing deps.cljs
directly:
{:foreign-libs [{:provides ["cljsjs.react-numeric-input"]
:requires ["cljsjs.react" "cljsjs.react.dom"]}]
:externs ["..."]}
Notes
- Not all React libs depend on both React and React-DOM
- There are existing packages that do not have dependencies or foreign-lib requires set, so you might be pointed here when updating a package