A template to generate a minimal figwheel-main based ClojureScript project
A template generator that will produce a minimal ClojureScript project that includes figwheel.main tooling.
Already an expert? Can’t stand to read more information? Assuming you have lein or clj-new installed, you can use one of the following commands:
clj -Tclj-new create :template figwheel-main :name yourname/hello-world :args '["+npm-bundle","--reagent"]' # or --rum, --react or nothing
or
lein new figwheel-main hello-world.core -- +npm-bundle --reagent # or --rum, --react or nothing
The figwheel-main
template is intended to get you up and running
with a no-frills ClojureScript project initialized with the
ClojureScript React framework of your choosing. It is intended to work
equally well with
Leiningen or
clj-new.
Make sure you have installed the Clojure CLI tools and are running the latest version.
Also, ensure you have installed clj-new as detailed here. The following creates a project subfolder “hello-world” and a project using “yourname” as root namespace:
clj -X:new clj-new/create :template figwheel-main :name yourname/hello-world :args '["--reagent"]'
Make sure you have the latest version of Leiningen installed.
lein new figwheel-main hello-world.core -- --reagent
Takes a name and possibly a single framework option with the
form --framework
and any number of attribute options of the form
+attribute
and produces a minimal ClojureScript project that
includes Figwheel Main tooling
The initial name option is intended to be the name of your initial project namespace. Here are some examples of valid project names:
hello.core
my.group/dominate.world
The framework options are:
--react which adds a minimal React/Sablono application in core.cljs
--reagent which adds a minimal Reagent application in core.cljs
--rum which adds a minimal Rum application in core.cljs
The attribute options are:
+npm-bundle which sets up a build that utilizes npm modules
+deps which generates a deps.edn (a default when used with clj-new)
+lein which generates a project.clj (a default when used with lein)
+bare-index which generates an index without any annoyingly helpful content
Only one framework option can be specified at a time. If no framework option is specified, nothing but a print statment is added to the generated ClojureScript code.
Examples:
lein new figwheel-main hello-world.core -- +deps +npm-bundle --react
clj -X:new create :template figwheel-main :name yourname/hello-world :args '["+bare-index","+lein","--react"]'
When using
+npm-bundle
you must runnpm install
before building your project
To get an interactive development environment change into the project root (the directory just created) and execute:
clojure -M:fig:build
After the compilation process is complete, and a browser has popped open the compiled project in your browser, you will get a ClojureScript REPL prompt that is connected to the browser.
An easy way to verify this is:
cljs.user=> (js/alert "Am I connected?")
and you should see an alert in the browser window.
You can also supply arguments to figwheel.main
like so (this is equivalent to clojure -A:fig:build
above):
clojure -M:fig -m figwheel.main -b dev -r
To clean all compiled files:
rm -rf target/public
To create a production build:
rm -rf target/public
clojure -M:fig:min
To get an interactive development environment change into the project root (the directory just created) and execute:
lein fig:build
After the compilation process is complete, and a browser has popped open the compiled project in your browser, you will get a ClojureScript REPL prompt that is connected to the browser.
An easy way to verify this is:
cljs.user=> (js/alert "Am I connected?")
and you should see an alert in the browser window.
You can also supply arguments to figwheel.main
like so:
lein fig -- -b dev -r
To clean all compiled files:
lein clean
To create a production build:
lein clean
lein fig:min
Your initial tests are in the test
directory. You will have tests
that are updated live with each file change if you open a tab to
http://localhost:9500/figwheel-extra-main/auto-testing
You can run your tests from the command line with:
clj -M:fig:test
or with lein
:
lein fig:test
See the figwheel.main
documentation
Hit me up on the Clojurians Slack on the #figwheel-main
channel.
Copyright © 2018 Bruce Hauman
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.