package opam-monorepo

  1. Overview
  2. Docs
Assemble and manage fully vendored Dune repositories

Install

Dune Dependency

Authors

Maintainers

Sources

opam-monorepo-0.3.4.tbz
sha256=cadc320f08ce8c3ab974d9d17b1c6330516355a69de24aa1fa780237d9618d5e
sha512=d06dff795f3ed7e38e5ed9b3594674db7cbcf18c199d76f7ff583ce341504394ed979544b2440efcc297b45e7b970d802490008e70e39b7db295ce72125afb3a

doc/faq.html

FAQ

Is This For Me?

This might be the right thing for you if all your dependencies use Dune and you are under full control of the build and deployment pipeline for your piece of software (e.g., if you are in a position to write a dune-workspace file).

For example:

  • You are building and deploying a piece of software in a Docker image.
  • You are building a website using a static-site generator and examples checked with MDX.
  • You are checking the impact of some changes in a library and all packages that depend on it.

About opam

Opam is a package manager that

  • determines which versions of a library to use for a project
  • executes build instructions for each of them so that a compiled form is available

Instead of the second step, opam-monorepo copies the source code of these dependencies into a Dune workspace, which Dune compiles directly.

In a way, this is a new kind of package management that uses source code in every step:

  • "Binary" package managers (apt, rpm) download the code as binary and install it as binary.
  • "Source" package managers download the code as source and install it as binary. Opam is in this category.
  • opam-monorepo downloads code as source and installs it as source.

New Workflows opam-monorepo Enable

With the sources available, certain tasks are easier:

  • Using Merlin to navigate the project (there's no distinction between jumping to a definition in the project’s code or in its dependencies)
  • Editing a dependency and rebuilding the project (even in watch mode)
  • Upstreaming changes made to dependencies (a dependency is just a subdirectory)
  • Cross-compilation - the details of how to build some native code can come late in the pipeline, which isn't a problem if the sources are available

Why is opam monorepo an opam Plugin?

Even though opam-monorepo doesn't require installing packages through opam, it is distributed as an opam plugin. There are two reasons for this:

  • It uses opam libraries internally to interact with the package repository and respect the local opam configuration (repositories, pins, etc.)
  • Opam plugins have a special behaviour; they can be installed globally, so one does not have to install opam-monorepo through opam in various projects.
OCaml

Innovation. Community. Security.