mirror of
https://github.com/status-im/status-mobile.git
synced 2025-01-11 17:24:27 +00:00
0f71c18f57
Disable :fn-deprecated warnings from the Closure compiler for the mobile shadow-cljs target during development. The compiler warnings are no longer necessary, because we're managing deprecation via clj-kondo. Without the compiler setting's change, every code reload will generate warnings for each and every deprecated call in the repo, which can quickly grow to the hundreds or more, thus making the terminal output horrendous to understand. Also set clj-kondo's "fail-level" to "error" (the default is "warning").
151 lines
7.9 KiB
Clojure
151 lines
7.9 KiB
Clojure
;; shadow-cljs configuration
|
|
{:source-paths ["src" "test/cljs"]
|
|
|
|
:dependencies [[reagent "1.2.0"]
|
|
[re-frame "1.3.0"]
|
|
[binaryage/oops "0.7.2"]
|
|
[com.andrewmcveigh/cljs-time "0.5.2"]
|
|
[status-im/timbre "4.10.0-2-status"]
|
|
[hickory "0.7.1"]
|
|
[cljs-bean "1.3.0"]
|
|
[com.cognitect/transit-cljs "0.8.248"]
|
|
[mvxcvi/alphabase "1.0.0"]
|
|
[camel-snake-kebab "0.4.3"]
|
|
;; Dev dependencies
|
|
[refactor-nrepl "2.5.0"]
|
|
[cider/cider-nrepl "0.25.3"]
|
|
[cider/piggieback "0.4.1"]
|
|
[re-frisk-remote "1.6.0"]
|
|
;; We don't use the encore library, but re-frisk requires re-frisk/sente (fork of
|
|
;; com.taoensso/sente), which in turn requires encore. We need to bump encore to
|
|
;; 3.21.0+ to remove a warning displayed while shadow-cljs starts (commit
|
|
;; https://github.com/ptaoussanis/encore/commit/f7a21567b9611a63999609ca183c7fb175034bd6).
|
|
[com.taoensso/encore "3.21.0"]
|
|
;; Routing
|
|
[bidi "2.1.6"]
|
|
;; 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"}
|
|
|
|
:cache-blockers #{status-im.utils.js-resources status-im.ui.components.icons.icons}
|
|
|
|
:builds
|
|
{:mobile
|
|
{:target :react-native
|
|
;; To match the folder created by Nix build of JSBundle.
|
|
:output-dir "result"
|
|
:init-fn status-im2.core/init
|
|
;; When false, the Shadow-CLJS watcher won't automatically refresh
|
|
;; the target files (a.k.a hot reload). When false, you can manually
|
|
;; reload by calling `shadow.cljs.devtools.api/watch-compile-all!`.
|
|
:devtools {:autobuild #shadow/env ["SHADOW_AUTOBUILD_ENABLED" :default true :as :bool]}
|
|
:dev {:devtools {:before-load-async status-im2.setup.hot-reload/before-reload
|
|
:after-load-async status-im2.setup.hot-reload/reload
|
|
:build-notify status-im2.setup.hot-reload/build-notify
|
|
:preloads [re-frisk-remote.preload
|
|
;; In order to use component test helpers in the REPL we
|
|
;; need to preload namespaces that are not normally required
|
|
;; by production code, such as
|
|
;; @testing-library/react-native.
|
|
test-helpers.component]}
|
|
:closure-defines
|
|
{status-im2.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
|
status-im2.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
|
status-im2.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
|
status-im2.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN"
|
|
status-im2.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
|
|
status-im2.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
|
|
status-im2.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"}
|
|
:compiler-options {:output-feature-set :es5
|
|
;; We disable `:fn-deprecated` warnings because we
|
|
;; are managing deprecation via clj-kondo and we
|
|
;; don't want the terminal output to be littered
|
|
;; with warnings on every code reload.
|
|
:warnings {:fn-deprecated false}
|
|
:closure-defines {re-frame.trace/trace-enabled? true}
|
|
:source-map false
|
|
:infer-externs 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.fleet.default-fleet/default-fleets}
|
|
:release
|
|
{:closure-defines
|
|
{status-im2.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
|
status-im2.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
|
status-im2.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
|
status-im2.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN"
|
|
status-im2.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
|
|
status-im2.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
|
|
status-im2.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"}
|
|
: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}}}}
|
|
;; 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
|
|
;; Uncomment line below to `make test-watch` a specific file
|
|
;; :ns-regexp "status-im2.subs.chat.messages-test$"
|
|
:main
|
|
status-im.test-runner/main
|
|
;; set :ui-driven to true to let shadow-cljs inject node-repl
|
|
:ui-driven
|
|
true
|
|
:closure-defines
|
|
{status-im2.config/POKT_TOKEN #shadow/env "POKT_TOKEN"
|
|
status-im2.config/INFURA_TOKEN #shadow/env "INFURA_TOKEN"
|
|
status-im2.config/OPENSEA_API_KEY #shadow/env "OPENSEA_API_KEY"
|
|
status-im2.config/ALCHEMY_ARBITRUM_GOERLI_TOKEN #shadow/env "ALCHEMY_ARBITRUM_GOERLI_TOKEN"
|
|
status-im2.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
|
|
status-im2.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
|
|
status-im2.config/ALCHEMY_ARBITRUM_MAINNET_TOKEN #shadow/env "ALCHEMY_ARBITRUM_MAINNET_TOKEN"}
|
|
: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
|
|
:infer-externs true}}
|
|
|
|
;; 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}}
|
|
:component-test {:target :npm-module
|
|
:entries [quo2.core-spec status-im2.core-spec]
|
|
:ns-regexp "component-spec$"
|
|
:output-dir "component-spec"
|
|
:compiler-options {:warnings-as-errors false
|
|
:static-fns false
|
|
:infer-externs true}}}}
|