Switch branches/tags
0.0.x 0.2.x 0.3.x add-travis-windows andreypopp/debug-macos-failure andreypopp/esy-build-dependencies-devDeps andreypopp/fix-647 andreypopp/gen-bat-shell andreypopp/include-workflow andreypopp/lockfile-syntax andreypopp/split-esy-install andreypopp/test-win-padding andreypopp/try-ocurl appveyor/debug bootstrap bryphe/appveyor/cache-npm bryphe/appveyor/improve-caching bryphe/bugfix/eaccess-on-install bryphe/build/remove-bootstrapping bryphe/ci/azure-windows-caching bryphe/ci/platform-package-report bryphe/ci/test-slowtest bryphe/dependency/appveyor-esy-0.3.4 bryphe/dependency/ocaml-4.6.8 bryphe/dependency/upgrade-esy-bash-0.2.1 bryphe/docs/xplat-draft bryphe/esy-rewrite-prefix-1 bryphe/inline-fastreplacestring bryphe/investigation/debug-logging-windows-hacks bryphe/investigation/debug-logging bryphe/lockfile-fixes+slowtests bryphe/proto/esyi-unblocked-windows bryphe/proto/use-forked-submodule bryphe/prototype/unc-paths bryphe/test/slow-test-compilation bryphe/travis/windows-build bryphe/windows/bugfix-arch bryphe/windows/build-esyi bryphe/windows/build-validate-ocamlbuild-project bryphe/windows/e2e-tests bryphe/windows/esy-build-package-permission-denied bryphe/windows/esyi-bash-windows-commands bryphe/windows/forked-override-repo bryphe/windows/hack-resolve-command bryphe/windows/hook-up-slowtests bryphe/windows/lockfile-logging bryphe/windows/long-paths-part-1 bryphe/windows/long-paths-part-2-check-reg bryphe/windows/release-artifact-part-1 bryphe/windows/skip-flaky-test bryphe/windows/slow-tests bryphe/windows/solver bryphe/664/windows-out-of-space bryphe/667/repro docs/cleanup feat/pnp fix/linked-changes fix/memoize fix/no-package-name fix/opam-test-doc fix/slow-test intern-fastreplacestring master rauanmayemir/feature/findlib-config some-random-pr test/fast-slow windows-recovery
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
67 lines (42 sloc) 2.2 KB
id title
What & Why

esy is a rapid workflow for developing Reason/OCaml projects. It supports native packages hosted on opam and npm.

For npm users

esy lets you manage native Reason/OCaml projects with a familiar npm-like workflow:

  • Declare dependencies in package.json.

  • Run the esy command within your project to download/build dependencies.

  • Share and consume individual Reason/OCaml package sources on the npm registry or Github.

  • Access packages published on opam (a package registry for OCaml) via @opam npm scope (for example @opam/lwt to pull lwt library from opam).

  • Easily bundle your project into a self contained, prebuilt binary package and share it on npm. These can be installed by anyone using plain npm.

For opam users

esy provides a fast and powerful workflow for local development of opam packages without requiring "switches". Opam packages are still accessable, and you can publish your packages to opam repository.

  • Manages OCaml compilers and dependencies on a per project basis.

  • Sandboxes project environment by exposing only those packages which are defined as dependencies.

  • Fast parallel builds which are agressively cached (even across different projects).

  • Keeps the ability to use packages published on opam repository.

In depth

  • Project metadata is managed inside package.json.

  • Parallel builds.

  • Clean environment builds for reproducibility.

  • Global build cache automatically shared across all projects — initializing new projects is often cheap.

  • File system sandboxing to prevent builds from mutating locations they don't own.

  • Solves environment variable pain. Native toolchains rely heavily on environment variables, and esy makes them behave predictably, and usually even gets them out of your way entirely.

  • Allows symlink style workflows for local development using link: dependencies. Allows you to work on several projects locally, automatically rebuilding any linked dependencies that have changed. There is no need to first register a package as "linkable".

  • Run commands in project environment quickly esy <anycommand>.