Elm loader
Webpack loader for the Elm programming language.
It is aware of Elm dependencies and tracks them. This means that in --watch
mode, if you require
an Elm module from a Webpack entry point, not only will
that .elm
file be watched for changes, but any other Elm modules it imports will
be watched for changes as well.
Installation
$ npm install --save elm-webpack-loader
Usage
In your webpack.config.js
file:
module.exports = {
module: {
loaders: [{
test: /\.elm$/,
exclude: [/elm-stuff/, /node_modules/],
loader: 'elm-webpack'
}]
}
};
See the examples section below for the complete webpack configuration.
Options
Cache (default false)
You can add cache=true
to the loader:
...
loader: 'elm-webpack?cache=true'
...
If you add this, when using npm run watch
, the loader will only load the
dependencies at startup. This could be performance improvement, but know that
new files won't be picked up and so won't be watched until you restart webpack.
This flag doesn't matter if you don't use watch mode.
cwd (default null)
You can add cwd=elmSource
to the loader:
var elmSource = __dirname + '/elm/path/in/project'
...
loader: 'elm-webpack?cwd=' + elmSource
...
You can use this to specify a custom location within your project for your elm files. Note, this will cause the compiler to look for all elm source files in the specified directory.
Upstream options
All options are sent down as an options
object to node-elm-compiler. For example, you can explicitly pick the local elm-make
binary by setting the option pathToMake
:
...
loader: 'elm-webpack?pathToMake=node_modules/.bin/elm-make',
...
For a list all possible options, consult the source.
Notes
Example
You can find an example in the example
folder.
To run:
npm install
npm run build
You can have webpack watch for changes with: npm run watch
You can run the webpack dev server with: npm run dev
For a full featured example project that uses elm-webpack-loader see pmdesgn/elm-webpack-starter .
noParse
Webpack can complain about precompiled files (files compiled by elm-make
).
You can silence this warning with noParse. You can see it in use in the example.
module: {
loaders: [...],
noParse: [/.elm$/]
}
Revisions
3.0.6
Allow version bumps of node-elm-compiler.
3.0.5
Upgrade to latest node-elm-compiler, which fixes some dependency tracking issues.
3.0.4
Fix potential race condition between dependency checking and compilation.
3.0.3
Use node-elm-compiler 4.0.1+ for important bugfix.
3.0.2
Use node-elm-compiler 4.0.0+
3.0.1
Pass a real error object to webpack on failures.
3.0.0
Support Elm 0.17, and remove obsolete appendExport
option.
2.0.0
Change warn
to be a pass-through compiler flag rather than a way to specify
logging behavior.
1.0.0
Initial stable release.