;; shadow-cljs configuration {:source-paths ["src" "test/cljs"] :dependencies [[org.clojure/core.async "1.1.587"] [reagent "0.10.0"] [re-frame "0.12.0"] [binaryage/oops "0.7.0"] [com.andrewmcveigh/cljs-time "0.5.2"] [status-im/timbre "4.10.0-2-status"] [com.taoensso/encore "2.105.0"] [hickory "0.7.1"] [cljs-bean "1.3.0"] [com.cognitect/transit-cljs "0.8.248"] [mvxcvi/alphabase "1.0.0"] ;; dev dependencies [refactor-nrepl "2.5.0"] [cider/cider-nrepl "0.24.0"] [cider/piggieback "0.4.1"] [re-frisk-remote "1.3.1"] ;; test dependencies [day8.re-frame/test "0.1.5"] [com.taoensso/tufte "2.1.0"]] ;; port and middleware for repl in development :nrepl {:port 7888 :middleware [cider.piggieback/wrap-cljs-repl refactor-nrepl.middleware/wrap-refactor]} ;; shadow-cljs web interface :http {:port 3449 :host "0.0.0.0"} :builds {:android {:target :react-native :output-dir "app" :init-fn status-im.android.core/init :dev {:devtools {:after-load status-im.reloader/reload :preloads [re-frisk-remote.preload]} :compiler-options {:closure-defines {re-frame.trace/trace-enabled? true}} ;; if you want to use a real device, set your local ip ;; in the SHADOW_HOST env variable to make sure that ;; it will use the right interface :local-ip #shadow/env "SHADOW_HOST"} :chunks {:fleets status-im.default-fleet/default-fleets} :release {:compiler-options {:output-feature-set :es6 ;;disable for android build as there ;;is an intermittent warning with deftype :warnings-as-errors false :infer-externs :auto :static-fns true :fn-invoke-direct true :optimizations :advanced :js-options {:js-provider :closure}}}} :ios {:target :react-native :output-dir "app" :init-fn status-im.ios.core/init :dev {:devtools {:after-load status-im.reloader/reload :preloads [re-frisk-remote.preload]} :compiler-options {:closure-defines {re-frame.trace/trace-enabled? true}} ;; if you want to use a real device, set your local ip ;; in the SHADOW_HOST env variable to make sure that ;; it will use the right interface :local-ip #shadow/env "SHADOW_HOST"} :chunks {:fleets status-im.default-fleet/default-fleets} :release {:compiler-options {:output-feature-set :es6 :warnings-as-errors true :infer-externs :auto :static-fns true :fn-invoke-direct true :optimizations :advanced :js-options {:js-provider :closure}}}} ;; the tests are ran with node, react-native dependencies are mocked ;; by using node --require override.js, which uses the node-library ;; produced by the target :mocks below and redefines node require ;; function to use the mocks instead of the rn libraries :test {:output-to "target/test/test.js" :output-dir "target/test" :optimizations :simple :target :node-test :compiler-options {;; needed because we override require and it ;; messes with source-map which reports callstack ;; exceeded exceptions instead of real issues :source-map false ;; needed because we use deref in tests :static-fns false :optimizations :simple}} ;; mock.js-dependencies is mocking the react-native libraries ;; we build it as a node library so that it can be required by ;; override.js :mocks {:target :node-library :exports {:mocks mocks.js-dependencies/mock} :output-to "target/mocks/mocks.js" :output-dir "target/mocks" :compiler-options {:optimizations :simple :source-map false}}}}