- Too much has happend. Trying to blog about the important stuff: https://code.thheller.com/
- fix missing cljs.spec.gen.alpha alias #74
- run release/check/compile tasks in parallel
- api/compile would dump all compiler state at the REPL. printing way too much data #71
- added http: protocol prefix for file reloads since electron doesn't understand //
- forgot to update
thheller/shadow-client
dependency which is required by the HUD
- updated ClojureScript to
1.9.160
- add
:open-file-command
- add
--debug
--source-maps
--pseudo-names
to CLI forshadow-cljs release
debugging
- add
:preloads
in:devtools
, same as in CLJS - add new "listener" Websocket that just listens to build messages
- add very basic (ugly) HUD based on the new Websocket, not enabled by default yet.
shadow-cljs help
same asshadow-cljs -h
shadow-cljs
package now ships with a default.babelrc
to prevent processing the generated files with crazy presets (ie.react-native
packager). It is already ES3, it should not need processing.
- another AOT fix
- server now generates one file per port, eg.
target/shadow-cljs/nrepl.port
- simple HTTP file server per build, configured via
:devtools {:http-root "path-to-dir" :http-port 8080}
. this is launched wheneverwatch
is running for the given build.
- added basic nREPL support with piggieback emulation [WIP]
- rewrite CLI script to parse args instead of just passing them to the JVM. This allows the script to show
-h
without launching a JVM. - add
--cli-info
option to print some basic info about the CLI command (paths, versions, dependencies, ...) - hopefully resolve all AOT issues by deleting all AOT
.class
files when:dependencies
change (or CLI version upgrade) - watch mode would never attempt recompiles when the first compile failed
- basic
shadow-cljs test
command to run allcljs.test
tests vianode
[WIP]
- fix some AOT issues that caused weird errors
- first pass making errors prettier as well
- [BREAKING] refactor all CLI commands, see
shadow-cljs -h
- [BREAKING] http, socket-repl now use random ports by default, add
:http {:port 12345}
to get a fixed port. - experimental nREPL support, still work in progress.
- fix broken node REPL
require
- add support for
ns
in REPL - add support for string requires in REPL
(require '["fs" :as fs])
- Closure warnings/errors are now pretty as well
- fix broken websocket in non-server mode #50
- remote mode. If a
shadow-cljs --server
is running theshadow-cljs
script will now connect to that instead of launching a new JVM. Leading to much faster response times. shadow-cljs --repl
will just connect to the server and start a CLJ REPL
- long lines could break the warning printer #49
--server
mode for the CLI, starts a shared JVM process that can be used to run multiple builds in parallel.- Clojure Socket REPL started by
--server
(default at localhost:8201).rlwrap nc localhost 8201
is the simplest possible client.
- Warning output with color
- improved warning output, they now include a little source excerpt ala figwheel
- no longer
:verbose
by default, now configured via:verbose true
inshadow-cljs.edn
- CLI script now scans parent directories when looking for config
- reworked CLI script to AOT compile some code to improve startup time (done once per version)
- fixed that the
:npm
config was no longer optional, it still should be
- [BREAKING] a shadow-cljs.edn config file is now mandatory, the script can create on for you. It is now also expected to contain a map and supports
:builds
,:dependencies
,:source-paths
and probaly more in the future. If you had a vector before just wrap it in{:builds the-vector}
. - [BREAKING] the package.json
"shadow-cljs"
entry is no longer used - the CLI script will now AOT-compile the CLJ sources to optimize startup speed. This only needs to be done once for each shadow-cljs version but reduces startup time from ~12s to ~3s.
- refactored most the the CLI script. It is now written in CLJS.
- refactored the dependency resolver/downloader to only do that and no longer launch the main process. It now only creates the classpath which is then used by another process. If the classpath is not modified this step is skipped.
- add support for "./foo" relative requires in the ns form. they are resolved relative to the source file, not the generated output file since that should be more obvious.
- properly output build warnings to the console, instead of just dumping the raw data.
- fix broken :node-script/:node-library :dev builds
- fix source maps containing ``"lineCount":null` so closure doesn't blow up
- [WIP] REPL for webpack builds
- refactor some code generation, always generates flat files now
$CLJS
is now the name for the global in:advanced
mode, barely makes a difference with gzip compared to just$
. should avoid any potential naming conflicts.
- fixed :npm-module require order
- the closure constants pass could sometimes move constants to invalid places (before cljs.core in the dependency order). also removed the deprecated API call.
- can now call js requires as functions
(:require ["npm-thing" :as thing]) (thing)"
CLJS-1968 - restructure file-reloading in the browser so it works with webpack builds
- [experimental] add support for
:advanced
in:npm-module
target builds - add support for
"output-dir"
inpackage.json
, defaults tonode_modules/shadow-cljs
- :output-dir and :asset-path (to match CLJS, same as :public-dir and :public-path)
- Text format for Closure Compiler warnings/errors
- refactored most of the internals shadow.cljs.closure namespace, no API changes
- write all cache files to
target/shadow-cljs/...
instead of 3 different places - Fix warning about missing
goog.nodeGlobalRequire
when using--check