- add a catch block around reload hook execution to prevent client process interruption
This removes the hawk watching library and utilizes com.nextjournal/beholder library instead. Which provides a much faster reloading experience if you have a large set of files. This library unfortunately includes the SL4j API library which causes a gross warning when figwheel starts and there are no logger implementations defined.
- auto-testing fix for ClojureScript regression
- Fix script running for :bundle builds
- webpack 5 compatibility by adding --entry flag to npx webpack command
- upgrade to ring 1.9.1, there was an internal api and a jetty server version change in ring 1.9.0 that requires an upgrade
- fix logging errors caused by CLJS 1.10.844
Webpack 5 changes the cli so that the -o flag no longer supports a full path to a output file only the output path.
For this reason the npx command emmitted by figwheel has changed to use --output-path and --output-filename explicitly rather than the -o flag.
I.E.
npx webpack --mode=development ./resources/public/cljs-out/dev/main.js --output-path ./resources/public/cljs-out/dev --output-filename main_bundle.js
New React Native support which includes support for React Native CLI and Expo as well as MacOS. See the docs here: https://figwheel.org/docs/react-native.html
:ssl-valid-hosts
allows you to specify what hosts the generated certificate should support:use-ssl
now creates a local dev certificate if one isn't supplied- added some improvements to using npm on windows
- added
:use-ssl
figwheel configuration option as sugar to make setting up https easier
Fixed a major bug introduced in 0.2.7 that caused extra-mains to overwrite the builds :output-to.
Also added the :clean-outputs
Figwheel option that will clean the
compiler's output targets before compiling and starting the build.
Also added the --clean
command line option that does the same thing.
Here are some examples of using the --clean
CLI option:
# this cleans before building
clojure -m figwheel.main --clean -b dev -r
# this cleans all the builds
clojure -m figwheel.main --clean
# this only cleans the dev build
clojure -m figwheel.main --clean dev
This version has a serious bug when using auto-testing or extra-mains. Please use 0.2.8
Pushed :bundle
target support forward a bit further.
- added
:bundle-freq
figwheel-option with:once
,:always
and:smart
which bundles whenoutput-to
ornpm_deps.js
changes - added
:auto-bundle
figwheel-option so supply basic default bundle config - log the bundle command and the bunder output when a bundle command fails
- added a warning to ensure the
:output-to
is inside the:output-dir
for the bundle target - added
--install-deps
cli support to the schema
Got extra-mains and auto-testing up and running along with a new intial docs page https://figwheel.org/docs/npm.html to help get started with an NPM based ClojureScript project.
- Added templating to
:bundle-cmd
cljs option: it interpolates:output-to
and:final-output-to
:bundle-cmd
only bundles one time when watching and compiling- set the fighweel option
:bundle-once
tofalse
to have bundling occur on every compile - set the fighweel option
:final-output-to
if you don't want the default of:output-to
+ "_bundle" - logs the bundle command when it runs for easier debugging
support for the new :bundle target requires clojurescript >= 1.10.764
The latest ClojureScript updated the Google Closure library which included some breaking changes when it comes to reloading. This release fixes those problems and also fixes fighweel-main problems that interfered with the support of the new :bundle target.
You can currently learn more about the new bundle target in the Clojruescript guide
https://clojurescript.org/guides/webpack
Using the bundle target will break auto-testing and the default index page. You will have to have your own host page.
There still needs to be some work done on Extra mains to get them to work properly with the new bundle target.
The main problem for many of these automated features is that figwheel has no idea of where the output file of webpack is because the webpack config is exterior to figwheel itself.
The new :bundle target probably deprecates the :npm-deps way of doing things. We'll need to take some time with this way of doing things to see what makes sense.
- Add :open-url-wait-ms option to delay launching the browser when :open-url is enabled
- fix repl hanging on error
- get rid of another glog/warning call
- allow the Jetty :configurator option
- fix connection race condition when the load event has already fired
- add repl-env function for compatability
-
fix goog warning
-
fix warning notification bug
-
update ring dependency to 1.7.1
-
fix goog/warning reference
-
fix dangling colon in connect url
-
up the message size limit for the Websocket to 16M
-
handle css imports in css-realoding
-
some :npm-deps fixes
-
output cljsc_opts ot help with bootstrapping clojurescript
So nothing groundbreaking in this release, just firming things up and pushing out changes because they have sat in the repo long enough.
- bump up to ring 0.1.7
- optionaly serve static cljsjs resources see https://figwheel.org/config-options#cljsjs-resources
- experimental - support for a cross over :nodejs Extra Main target to compile a project for the browser and node -- this more than likely wont work in many cases
- change the way that figwheel.main detects whether clj is launching figwheel from a project directory
- CSS reloading improvement
- ensure not zero exit when not watching or building once
- make syntax errors log at level :warn
This release has focused on making it much easier to integrate testing into your workflow. Auto-testing, CLI testing for dev ops integration, and headless testing support come together to make testing a major feature in figwheel.main.
See the testing documentation here: https://figwheel.org/docs/testing.html See the async main script docs here: https://figwheel.org/docs/main_script.html
- auto discovery and display of tests found in your source files with
:auto-testing true
- added async support to the
--main
CLi arg that also supports non-zero exit status :launch-js
option was created to support use of headless environments during testing Learn more- fixed regresion where
--compile --repl
didn't start a repl
The new :extra-main-files
option makes integrating things like tests
and devcards to your build super simple and CPU efficient
Learn more
There was a long standing bug with :global-exports
support that I
was able to squash which in turn led to changes that make working with
npm modules much easier.
The new :npm
option will help you make quick work of integrating
webpack bundled npm modules into your
build. Learn more
- added
:pre-build-hooks
and:post-build-hooks
config options Learn more - fixed the
figwheel.main
api in the CLJS repl so that it works properly under nREPL - added the
:build-inputs
config option Learn More - finally added the validation smiley
\\(ツ)/
, I pretty much had to after I saw this tweet
Fixes a bug that was deleting the listeners that notified the client to reload.
update: hot reloading does not work when figwheel.main is started from nREPL
Added a Scripting API that allows one to start multiple builds and
then attach a REPL to any of the running builds. The API also allows
one to stop builds and obtain a repl-env from a build (this is
expecially helpful for VIM fireplace). See the figwheel.main.api
namespace and the docs at
https://figwheel.org/docs/scripting_api.html
- ignore preload link tags when reloading CSS
- fixed a major problem on Windows that created a bad
:asset-path
which prevented the REPL from connecting - merge build args which allows you to supply path seperated build ids to
--build
- allow connect-urls to not have a process-id and still connect
- change the default build name to
"unknown"
rather than common name"dev"
- allow the
--serve
flag after the--build-once
flag, for testing advanced compiles and such - throw an error when trying to start a REPL with a level other than
:optimizations :none
- when the compile level is
:whitespace
,:simple
or:advanced
only pass:main
ns to compiler - made the default :asset-path a root path instead of relative
- add cljs.repl macros (doc, source, and friends) to the REPL
- now providing much more feedback when a
:ring-handler
doesn't load, prints out syntax errors etc. - added support for the new nREPL https://github.com/nrepl/nREPL
- setting
:reload-clj-files false
should still reload cljc files on the CLJS side - support code splitting
This release was only to establish https://github.com/bhauman/figwheel-main as the new home of com.bhauman/figwheel-main
- enable reloading of dependents, configurable with :reload-dependents
- bump rebel-readline-cljs dep to latest
- fix the helper app so that it only attempts to operate on a DOM node if it is present
- added new evalback functionality which gives the client the ability to evaluate cljs through the figwheel REPL connection
- fixed a problem where js/require couldn't be invoked from the REPL in Node
- ensure that repl warnings don't make it into the source code for a required ns
- added some helper content for the new figwheel-main-template
- validate that symbols in config don't start with quotes (a very common mistake)
- fix classloader bug that prevented figwheel.main from starting Java 9/10
- fix NPE when nonexistant namespace is provided as main ns
- add helper app to provide contextual information when launching
figwheel.main
- fix case when target directory is on the classpath but does not exist, as resources will not resolve in this case
- warn when there is a
resources/public/index.html
and theresources
directory is not on the classpath - ensure that the watched directories are on the classpath
- ensure that the watched directories have source files
- ensure the directory, that the
:main
ns is in, is on the classpath - auto include
binaryage/devtools
in opt none builds targeting the browser - fixed bug where providing a
:ring-handler
in build metadata didn't work - fixed bug where single compiles with the -c option were not working for optimization levels other than none
- add
:client-log-level
option to set the level for client side logging - fixed problem where node target builds were launching a browser
- fixed undefined var warnings in the REPL by ensuring full analysis on REPL start