Import clojurescript into ES6 module
In case you have a clojurescript codebase and you want to use it in your ES6 project. Sadly exports-loader does not work with it out of the box. Here's what to do.
Mark exported functions using ^:export
metadata.
;; algo/core.cljs
(defn ^:export answer
[nums]
(solve nums))
This way you can call this function using using its module path algo.core.answer([1, 2, 3])
.
Compile your library using lein do clean, cljsbuild once min
Now your cljs code are compiled to js wrapped using a immediate called function like this.
(function (){
// export module to this,
})();
This does not properly pass module context to inner function. We need to make some modification to that compiled javascript.
Modify this exported javascript file to pass a context object to the inner function
(function (){
// add stuff to this,
}).call(exports);
Import your clojurescript library using ES6 import
import algo from 'exports?exports.algo.core!./algo';
Remember to install exports-loader with npm install --save-dev exports-loader