-
Notifications
You must be signed in to change notification settings - Fork 816
Using Packages
Wang Liao edited this page Apr 3, 2018
·
10 revisions
To use cljsjs packages, simply add
[cljsjs/{name} "{version}"]
to your project.clj :dependencies
.
Then in one of your :main
namespaces do
(ns application.core
(:require cljsjs.{name}))
Note that for some packages, you could need other dependencies. This should be mentioned in the package read-me.
Enjoy using cljsjs packages!
JavaScript packages do not expose Clojure namespaces. The names which are exposed in the projects externs file will be available in the js
namespace after the package is required. So for instance, the cljsjs/showdown
package's externs.js file currently looks like this:
var showdown = {
"extensions": function () {},
"forEach": function () {},
"converter": function () {}
};
showdown.Converter.prototype.makeHtml = function () {};
To use this package from ClojureScript, you might do something like this:
(ns my.name.space
(:require [cljsjs.showdown])) ; note, no :as or :refer here
(defn convert-to-html [markdown]
;; note the syntax below: js/VarFromExternsFile.property
;; the dot on the end is the usual Clojure interop syntax: (Constructor. constructor-arg constructor-arg)
(let [converter (js/showdown.Converter.)]
;; methods you call will generally need to be called out as prototype values in the externs
(.makeHtml converter markdown)))