Getting started
Installation
npm install --save-dev elm-watch
ℹ️ You need to install Elm itself separately, in whatever way you prefer (installer, npm, unofficial npm, elm-tooling).
ℹ️ Node.js 16 or newer is required.
npx elm-watch --help
Quick start
ℹ️ If you don’t already have an Elm project, create one by running elm init
.
ℹ️ Also make sure you have an HTML file. If it works with plain elm make
, it works with elm-watch. See the next section for inspiration.
Create a file called elm-watch.json:
npx elm-watch init
{
"targets": {
"My target name": {
"inputs": [
"src/Main.elm"
],
"output": "build/main.js"
}
}
}
Start watching with hot reloading:
npx elm-watch hot
The command prints the link to a local development HTTP server (which is completely optional to use, but easy to get started with).
To build for production:
npx elm-watch make --optimize
HTML and other files
elm-watch is only responsible for turning your Elm files into JS files. Like running elm make src/Main.elm --output build/main.js
yourself. So that’s the mindset you need to have.
You are responsible for creating an HTML file, linking to the built JS and initializing the app.
Here’s some HTML to get you started.
-
For
Browser.sandbox
andBrowser.element
:<!-- Absolute URL to the built JS. --> <script src="/build/main.js"></script> <div id="root"></div> <script> var app = Elm.Main.init({ node: document.getElementById("root") }); </script>
-
For
Browser.document
andBrowser.application
:<!-- Absolute URL to the built JS. --> <script src="/build/main.js"></script> <script> var app = Elm.Main.init(); </script>
-
If you need TypeScript and CSS compilation, you need to set up another build tool alongside elm-watch.
<!-- Separate script tag for Elm. --> <script src="/build/main.js"></script> <!-- Another script tag for JS built by another tool. --> <script src="/build/bundle.js"></script>
ℹ️ elm-watch requires window.Elm to exist!