Skip to content
Brunch plugin to compile Elm code
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
test Elm 0.19 (#46) Sep 12, 2018
.gitignore Removing node_modules and adding to .gitignore Aug 10, 2015
.travis.yml Add travis config (#40) Mar 4, 2018 Version 0.12.0 Sep 12, 2018 Add new issue template Mar 7, 2016
LICENSE Initial commit May 11, 2015 Update README based on #48 Apr 3, 2019
index.js Elm 19 adaptation (#45) Sep 12, 2018
package.json Version 0.12.0 Sep 12, 2018


Brunch plugin to compile Elm code

Build Status


First, install Elm.

Then, install elm-brunch:

npm install --save-dev elm-brunch

Update the watched configuration in your brunch-config.js, e.g.:

paths: {
  watched: ["css", "js", "elm"]


  // Configure your plugins in brunch-config.js (or .coffee)
    plugins: {

      elmBrunch: {
        // (required) Set to the elm file(s) containing your "main" function `elm make`
        //            handles all elm dependencies relative to `elmFolder`
        mainModules: ['source/path/YourMainModule.elm'],

        // (optional) Set to keep an independent elm-stuff folder per mainModule. If
        //            mainModules is an array, then the 'source/path' of each mainModule
        //            will be appended to your elm-folder, allowing each subfolder to keep their
        //            own set of elm dependencies.
        independentModules: true,

        // (optional) Set to path where `elm-make` is located, relative to `elmFolder`
        executablePath: '../../node_modules/elm/binwrappers',

        // (optional) Set to path where elm-package.json is located, defaults to project root
        //            if your elm files are not in /app then make sure to configure
        //            paths.watched in main brunch config
        elmFolder: 'path/to/elm-files',

        // (optional) Defaults to 'js/' folder in paths.public
        // relative to `elmFolder`
        outputFolder: 'some/path/',

        // (optional) If specified, all mainModules will be compiled to a single file
        //            This is merged with outputFolder.
        outputFile: 'elm.js',

        // (optional) add some parameters that are passed to elm-make
        makeParameters: ['--warn'],

        // (optional) Change the command that the compiler is ran with.
        //            Set to `elm-make` for backwards compatibility
        elmMake: "elm-make",

        // (optional) Add `--optimize` to compile for production
        //            Note: you cannot use this option and `--debug` in makeParameters simultaneously
        optimize: true

The output filename is the lowercase version of the main module name:

YourMainModule.elm => outputFolder/yourmainmodule.js

Note: You should update the "source-directories" property in the elm-package.json file if you want to compile multi-file elm projects. Then configure elm-brunch:

Note: this plugin does not pass the generated javascript code to brunch, so you need to either directly include the generated js file in your html or use some other method to bundle it into your final package.


The following repos are examples of elm-brunch configuration:

You can’t perform that action at this time.