Awesome Open Source
Awesome Open Source

Melos

A tool for managing Dart projects with multiple packages, inspired by Lerna.

Melos docs.page

DocumentationLicense

About

Splitting up large code bases into separate independently versioned packages is extremely useful for code sharing. However, making changes across many repositories is messy and difficult to track, and testing across repositories gets complicated really fast.

To solve these (and many other) problems, some projects will organize their code bases into multi-package repositories (sometimes called monorepos).

Melos is a tool that optimizes the workflow around managing multi-package repositories with git and Pub.

What can Melos do?

  • Override pub get in development to install packages in your workspace from path without having to edit your pubspec.yaml.
  • Automatically version, create changelogs and publish your packages using Conventional Commits.
  • Pre-define advanced custom scripts for your workspace in your melos.yaml configuration to use via melos run [scriptName]. Anyone contributing to your workspace can just run melos run to be prompted to select a script from a list with descriptions of each script.
  • Scripts can even prompt to select a package to run against with pre-defined filters.
  • Execute commands across your packages easily with melos exec -- command here with additional concurrency and fail-fast options.
  • Environment variables containing various information about the current package and the workspace are available in each execution.
  • Can be combined with all package filters.
  • Many advanced package filtering options allowing you to target specific packages or groups of packages in your workspace.
  • Advanced support for IntelliJ IDEs with automatic creation of run configurations for workspace defined scripts and more on workspace bootstrap.
  • Vscode code doesn't require advanced integration to work.

Install

dart pub global activate melos

How to Contribute

To start making contributions please refer to CONTRIBUTING.md.

README Badge

Using Melos? Add a README badge to show it off:

melos

[![melos](https://img.shields.io/badge/maintained%20with-melos-f700ff.svg?style=flat-square)](https://github.com/invertase/melos)

Built and maintained by Invertase.



Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Dart (58,452
Flutter (31,428
Vscode (10,398
Intellij (5,392
Badge (4,859
Lerna (1,024
Pubdev (79