Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

melange-re/melange

A mixture of tooling combined to produce JavaScript from OCaml & Reason

melange-re/melange.json
{
"createdAt": "2019-12-01T00:29:21Z",
"defaultBranch": "main",
"description": "A mixture of tooling combined to produce JavaScript from OCaml & Reason",
"fullName": "melange-re/melange",
"homepage": "https://melange.re",
"language": "OCaml",
"name": "melange",
"pushedAt": "2025-11-24T23:02:38Z",
"stargazersCount": 945,
"topics": [],
"updatedAt": "2025-11-25T15:13:32Z",
"url": "https://github.com/melange-re/melange"
}

Melange compiles OCaml / Reason to JavaScript

Section titled “Melange compiles OCaml / Reason to JavaScript”

Powered by the versatile OCaml type system, with best-in-class type inference, Melange produces robust JavaScript code.

  • [Melange]!(#melange)
    • [Installation]!(#installation)
      • [OPAM]!(#opam)
      • [Nix]!(#nix)
      • [OCaml version compatibility]!(#ocaml-version-compatibility)
    • [Editor integration]!(#editor-integration)
    • [Community]!(#community)
    • [FAQ]!(#faq)
      • [How does this project relate to other tools?]!(#how-does-this-project-relate-to-other-tools)
    • [Contributing]!(#contributing)
    • [Acknowledgments]!(#acknowledgments)
    • [Licensing]!(#licensing)

Sponsored by:

Check melange.re to get started.

Melange is released to OPAM. Install it with:

Terminal window
$ opam install melange

melange-re/melange-opam-template provides a GitHub template repository that can be used as a project starter.

Melange has good support for Nix:

  • github:melange-re/melange can be added as a flake input
  • the melange flake provides a melange.overlays.default overlay that adds melange to pkgs.ocamlPackages.melange
  • the melc binary can be run with nix run github:melange-re/melange, e.g. nix run github:melange-re/melange/2.0.0 -- --help
  • Melange v3.0 works on OCaml 4.14 (v3-414) and 5.1 (v3-51).
  • Melange v2.0 works on OCaml 5.1 only.
  • Melange v1.0 can build projects with OCaml >= 4.13 (including OCaml 5.x).
    • Editor integration only works on OCaml 4.14, because Melange emits .cmt artifacts targeting the OCaml 4.14 binary format.

Melange has first class support in Dune. ocaml-lsp or Merlin works as usual. In VSCode, the VSCode OCaml Platform extension is recommended.

How does this project relate to other tools?

Section titled “How does this project relate to other tools?”

This project is forked from an earlier version of the ReScript compiler, focused on a deeper integration with the OCaml ecosystem. Such integration makes it easy to share code between backend and frontend using e.g. Dune’s virtual libraries.

Melange 1.0 includes a ReScript compatibility layer to maintain compatibility with ReScript syntax - preserving access to ReScript’s package ecosystem. Both ReScript and Melange have diverged significantly since then, and this compatibility layer was removed in Melange 2.0.

A small write-up with more details on the motivation behind this project can be found in the announcement blog post. Additional write-ups exist at anmonteiro.substack.com

Below is a quick comparison between Melange and other tools:

NamePurposeDependenciesNotes
OPAMPackage managerNoneObtaining dependencies such as dune or reason
DuneBuild toolInstalled with e.g. opamComposable build tool for OCaml; supports composing custom rules to build any project
ReasonSyntaxInstalled with e.g. opamAlternative syntax to OCaml
MelangeCompiler that emits JavaScriptOPAM (to install), Dune (to build)Supports OCaml and Reason; derived from ReScript, focused on deeper integration with OCaml
ReScriptThe brand around a syntax and a compiler that emits JavaScriptNoneDistributed via NPM as prebuilt binaries; previously called BuckleScript

See [CONTRIBUTING.md]!(CONTRIBUTING.md).

  • Thanks to the ReScript project, its author and maintainer @bobzhang, and its many contributors. Melange is a fork of ReScript, and continues to incorporate patches to ReScript on a regular basis.
  • Thanks to the OCaml team, obviously, without such a beautiful yet practical language, this project would not exist.
  • Thanks to Bloomberg and Facebook. The ReScript project began at Bloomberg and was published in 2016; without the support of Bloomberg, it would not have happened. ReScript was funded by Facebook since July 2017.

See also [Credits.md]!(./Credits.md) concerning some individual components of Melange.

See [COPYING]!(./COPYING) and [COPYING.LESSER]!(./COPYING.LESSER)

See [Credits]!(./Credits.md) for more details.