# elm

> Installer for Elm: just downloads the binary into node_modules

Latest version **0.19.2-0** (published 2026-07-06) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install elm
pnpm add elm
yarn add elm
bun add elm
```

Provides the command `elm`.

## Health

**Score 53/100 (C)** — status: active.

Positive: has types package; no vulnerabilities; high maintenance score.

Warnings: low downloads; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.19.2-0 |
| Published | 2026-07-06 |
| First published | 2014-10-12 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | separate (@types/elm) |
| Module format | CommonJS |
| Node | >=7.0.0 |
| Dependencies | 0 |
| Unpacked size | 7.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | yes |
| GitHub stars | 7907 |
| Author | Evan Czaplicki |
| Maintainers | evancz, rtfeldman, brianhicks |
| Keywords | bin, binary, binaries, elm, install, installer |

## Links

- npm: https://www.npmjs.com/package/elm
- Repository: https://github.com/elm/compiler
- Homepage: https://github.com/elm/compiler/tree/main/installers/npm
- Issues: https://github.com/elm/compiler/issues
- npm.io page: https://npm.io/package/elm

## Recent versions

- 0.19.2-0 (latest) — 2026-07-06
- 0.19.1-5 (latest-0.19.1) — 2021-01-29
- 0.19.0-no-deps (latest-0.19.0) — 2019-05-11
- 0.18.0-exp5 (elm0.18.0) — 2018-04-20
- 0.19.1-6 — 2023-11-01
- 0.19.1-4 — 2021-01-28
- 0.19.1-3 — 2019-10-22
- 0.19.1-2 — 2019-10-21
- 0.19.1-1 — 2019-10-21
- 0.19.1 — 2019-10-21
- 0.19.0-bugfix6 — 2019-01-18
- 0.19.0-bugfix5 — 2019-01-18
- 0.19.0-bugfix4 — 2019-01-18
- 0.19.0-bugfix3 — 2019-01-18
- 0.19.0-bugfix2 — 2018-08-22
- … 31 more at https://npm.io/package/elm/versions

## README

# Elm Installer

[Elm](https://elm-lang.org) is a functional programming language that compiles to JavaScript.

Head over to [The Official Guide](https://guide.elm-lang.org/) to start learning Elm!


<br/>

## What is this package for?

For normal installs, I reccomend using the instructions [here](https://guide.elm-lang.org/install/elm.html) instead. This package is only for people who enjoy using `npm` even when it is not necessary, or for people who want to use `npm` for certain scenarios such as:

**Multiple versions**

People using Elm at work may use different versions of Elm in different projects. They can run `npm install elm@latest-0.19.2` in each project and use the binary at `./node_modules/.bin/elm` for compilation.

**Continuous integration**

The `npm` installer works for this, but there are faster and more reliable options:

1. You can download `elm` directly from GitHub with [this script](https://github.com/elm/compiler/blob/master/installers/linux/README.md). This allows you to skip `npm` entirely.
2. Many continuous integration have ways to cache files ([example](https://docs.travis-ci.com/user/caching/)) to make builds faster and more reliable. This is the ideal setup.

That said, it works to use the `npm` installer on CI if you prefer that option.


<br/>

## Install Locally

The following command should download the latest Elm 0.19.2 binary:

```
npm install elm@latest-0.19.2
```

You should be able to run `./node_modules/bin/elm --version` within your project and see `0.19.2`. Now you can compile with `./node_modules/bin/elm make src/Main.elm` and not disrupt other packages.

Use `npm install elm@latest-0.19.0` or `npm install elm@latest-0.18.0` for earlier versions.

**Note:** The `latest-X.Y.Z` convention is used in case we need to publish patches for the `npm` installer within a given Elm release. For example, say `npm` decides that some transitive dependency is not secure. Nothing is changing about Elm or the binaries, but we need to publish a new `npm` installer that fixes this issue.

---
_Source: https://npm.io/package/elm · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
