mkdir hello-bundler
cd hello-bundler
echo '{:deps {org.clojure/clojurescript {:mvn/version "1.10.741"}}}' > deps.edn
yarn add webpack webpack-cli react react-dom --save-dev
mkdir -p src/hello_bundler
;; src/hello_bundler/core.cljs
(ns hello-bundler.core
(:require [react]
[react-dom]))
(def h1 (react/createElement "h1" nil "Hello!"))
(react-dom/render h1 (.getElementById js/document "root"))
echo '<div id="root"></div><script src="bundle.js"></script>' > index.html
;; webpack.config.js
module.exports = {
entry: "./out/index.js",
output: {
path: __dirname,
filename: "bundle.js"
}
}
;; build.edn
{:main hello-bundler.core
:output-to "out/index.js"
:output-dir "out"
:target :bundle
:bundle-cmd {:none ["npx" "webpack" "--mode=development"]
:default ["npx" "webpack"]}}
clj -m cljs.main -co build.edn --compile --repl