• Stars
    star
    1,155
  • Rank 40,393 (Top 0.8 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 26 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸŒ‹ A tool for managing Dart projects with multiple packages. With IntelliJ and Vscode IDE support. Supports automated versioning, changelogs & publishing via Conventional Commits.

Melos

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

Melos docs.page Chat on Discord

Documentation β€’ License


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 does a Melos workspace look like?

A default file structure looks something like this:

my-melos-repo/
  melos.yaml
  packages/
    package-1/
      pubspec.yaml
    package-2/
      pubspec.yaml

The location of your packages can be configured via the melos.yaml configuration file if the default is unsuitable.

What can Melos do?

  • πŸ”— Link local packages in your workspace together without adding dependency overrides.
  • πŸ“¦ 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.
  • ⚑ 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.
    • --no-private
      • Exclude private packages (publish_to: none).
    • --[no-]published
      • Filter packages where the current local package version exists on pub.dev. Or "-no-published" to filter packages that have not had their current version published yet.
    • --[no-]nullsafety
      • Filter packages where the current local version uses a "nullsafety" prerelease preid. Or "-no-nullsafety" to filter packages where their current version does not have a "nullsafety" preid.
    • --[no-]flutter
      • Filter packages where the package depends on the Flutter SDK. Or "-no-flutter" to filter packages that do not depend on the Flutter SDK.
    • --scope=<glob>
      • Include only packages with names matching the given glob.
    • --ignore=<glob>
      • Exclude packages with names matching the given glob.
    • --diff=<ref>
      • Only include packages that have been changed since the specified ref, e.g. a commit sha or git tag.
    • --dir-exists=<dirRelativeToPackageRoot>
      • Include only packages where a specific directory exists inside the package.
    • --file-exists=<fileRelativeToPackageRoot>
      • Include only packages where a specific file exists in the package.
    • --depends-on=<dependantPackageName>
      • Include only packages that depend on a specific package.
    • --no-depends-on=<noDependantPackageName>
      • Include only packages that don't depend on a specific package.
  • ♨️ Advanced support for IntelliJ IDEs with automatic creation of run configurations for workspace defined scripts and more on workspace bootstrap.
    • Integration with VS Code through an extension.

Getting Started

Go to the Getting Started page of the documentation to start using Melos.

Who is using Melos?

The following projects are using Melos:

Submit a PR if you'd like to add your project to the list. Update the README.md and the docs.

You can also add a README badge to your projects README to let others know about Melos πŸ’™.

Documentation

Documentation is available at https://melos.invertase.dev.

Migrations

When migrating between major versions of Melos, please read the migration guide.

Commands

Full commands list and args can be viewed by running melos --help.

> melos --help

A CLI tool for managing Dart & Flutter projects with multiple packages.

Usage: melos <command> [arguments]

Global options:
-h, --help        Print this usage information.
    --verbose     Enable verbose logging.
    --sdk-path    Path to the Dart/Flutter SDK that should be used. This command line option has precedence over the `sdkPath` option in the `melos.yaml` configuration file and the `MELOS_SDK_PATH` environment variable. To use the system-wide SDK, provide the special value "auto".

Available commands:
  bootstrap   Initialize the workspace, link local packages together and install remaining package dependencies. Supports all package filtering options.
  clean       Clean this workspace and all packages. This deletes the temporary pub & ide files such as ".packages" & ".flutter-plugins". Supports all package filtering options.
  exec        Execute an arbitrary command in each package. Supports all package filtering options.
  list        List local packages in various output formats. Supports all package filtering options.
  publish     Publish any unpublished packages or package versions in your repository to pub.dev. Dry run is on by default.
  run         Run a script by name defined in the workspace melos.yaml config file.
  version     Automatically version and generate changelogs based on the Conventional Commits specification. Supports all package filtering options.

Run "melos help <command>" for more information about a command.

How to Contribute

To start making contributions please refer to CONTRIBUTING.md.

Lerna

This project is heavily inspired by Lerna.

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)

License


Built and maintained with πŸ’› by Invertase.

Β Β Follow on Twitter

More Repositories

1

react-native-firebase

πŸ”₯ A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.
JavaScript
11,690
star
2

rdash-angular

AngularJS implementation of the RDash admin dashboard theme
HTML
4,686
star
3

react-native-material-design

React Native UI Components for Material Design
JavaScript
3,151
star
4

notifee

βš›οΈ A feature rich notifications library for React Native.
TypeScript
1,841
star
5

react-native-apple-authentication

A React Native library providing support for Apple Authentication on iOS and Android.
JavaScript
1,407
star
6

react-native-firebase-starter

DEPRECATED: For RNFB v5 only.
JavaScript
1,172
star
7

react-native-google-mobile-ads

React Native Google Mobile Ads enables you to monetize your app with AdMob.
TypeScript
688
star
8

react-native-material-design-demo

An Android app to demonstrate react-native-material-design
JavaScript
494
star
9

react-native-notifee

Moved to https://github.com/invertase/notifee
TypeScript
465
star
10

docs.page

Instant Open Source docs with zero configuration.
TypeScript
463
star
11

firestore-ios-sdk-frameworks

⚑ Precompiled Firestore iOS SDKs extracted from the Firebase iOS SDK repository release downloads for faster build times.
Ruby
444
star
12

stripe-firebase-extensions

Repository of Firebase Extensions built by Stripe.
TypeScript
437
star
13

react-query-firebase

React Query hooks for managing asynchronous operations with Firebase. Supports Authentication, Analytics, Firestore & Realtime Database.
TypeScript
390
star
14

denque

The fastest javascript implementation of a double-ended queue. Used by the official Redis, MongoDB, MariaDB & MySQL libraries for Node.js and many other libraries.
JavaScript
353
star
15

dart_edge

Run Dart on the Edge - supporting Vercel & Cloudflare Workers (more coming soon).
Dart
321
star
16

zapp.run

Zapp! A free online sandbox environment for building Flutter applications in the browser.
Dart
318
star
17

spec

βœ… A streamlined testing framework for Dart & Flutter.
Dart
302
star
18

dart_custom_lint

πŸ’‘ Easily write powerful Dart & Flutter lint rules for your projects or for users of your packages.
Dart
283
star
19

angular-toasty

A simple standalone AngularJS module with extensive features that provides growl-style alerts and messages for your app!
CSS
255
star
20

react-native-firebase-docs

DEPRECATED: For RNFB v5 only.
190
star
21

flutterfire_cli

A CLI to help with using FlutterFire in your Flutter applications.
Dart
172
star
22

github-action-dart-analyzer

A GitHub action to run Dart analyzer with annotation support.
TypeScript
168
star
23

react-native-firebase-authentication-example

An example React Native Firebase application integrating authentication.
TypeScript
141
star
24

conference-app

Dart
126
star
25

globe

🌎 The global deployment platform for Dart & Flutter applications.
Dart
124
star
26

dart_firebase_admin

πŸ”₯ A Firebase Admin SDK for Dart.
Dart
119
star
27

jet

✈️ Test your React Native modules e2e; mock-free and native testing code free.
TypeScript
98
star
28

react-native-gradle-plugin

A gradle plugin for React Native Android that simplifies and standardises build configurations (such as dependency versioning) for Projects & React Native modules.
Groovy
64
star
29

dart_docker

πŸ‹ A Dart client for the Docker API via local unix socket.
Dart
45
star
30

flutter_desktop_webview_auth

WebView OAuth flows for desktop flutter apps
C++
34
star
31

dart_firebase_apis

πŸ”₯ Generated Firebase APIs for Dart. Additionally Includes private and unlisted APIs.
Dart
29
star
32

puppeteer-pool

Flexible Puppeteer Browser instance resource pooling.
JavaScript
29
star
33

nodejs-paddle-sdk

A fully typed Node.js library for integration with Paddle.
TypeScript
28
star
34

firebase-extensions

A collection of Firebase Extensions built by Invertase.
TypeScript
28
star
35

deeps

Performant utilities to manage deeply nested objects. get, set, flatten, diff etc.
JavaScript
26
star
36

dart-cli-utilities

βš’οΈ A monorepo containing a collection of packages that provide useful functionality for building CLI applications in Dart.
Dart
21
star
37

samples

Collection of samples from our projects and tutorials.
Dart
20
star
38

cluster-key-slot

Generates CRC hashes for strings - for use by Node Redis clients to determine key slots.
JavaScript
19
star
39

genkit-samples

Invertase genkit samples
TypeScript
18
star
40

react-native-firebase-workshop-app

Showcasing React Native + Firebase
TypeScript
13
star
41

sails-firebase-auth

A SailsJS v1 JSON starter api with Firebase token authentication.
JavaScript
10
star
42

crc16

Native node addon to calculate CRC16 values.
C++
10
star
43

firebase-firestore-fields

Convert Firebase Cloud Firestore fields into a usable JavaScript format
JavaScript
10
star
44

react-native-auto-link-example

Init a React Native project with auto-linking πŸ”₯
Objective-C
10
star
45

react-native-template

Generic template for Invertase React Native projects
Objective-C
9
star
46

genkit-plugins

TypeScript
9
star
47

nodejs-google-java-format

Node.js repackaging of Google's native `google-java-format` tool.
JavaScript
8
star
48

remix-firebase-storage-file-handler

An upload handler for Remix using Firebase Storage
TypeScript
8
star
49

a2a

Async await to Array -> `const [error, value] = await A2A(fooPromise());`
JavaScript
7
star
50

dart_globe_examples

Repository containing various Dart examples for Globe.
6
star
51

firebase-extension-utilities

TypeScript
6
star
52

nx-dart

A Nx plugin, that adds support for developing Dart and Flutter packages in a Nx workspace.
TypeScript
6
star
53

babel-preset-react-native-syntax

πŸ“¦Babel preset providing syntax only plugins used by babel-preset-react-native - supports React Native ^0.56.0.
JavaScript
5
star
54

firebase-relationship

A simple Firebase Realtime Database relationship manager.
JavaScript
5
star
55

genkit-plugin-redis

A Redis Plugin for GenKit that adds Redis for efficient state storage, trace storage, caching, and rate limiting.
TypeScript
5
star
56

firebase-emulator-action

Shell
4
star
57

sails-ioredis

Redis adapter for waterline with sentinel and cluster support support (ioredis)
JavaScript
4
star
58

tutorials

πŸŽ“ A collection of open-source tutorials by us and the open-source community covering topics such as React Native and Firebase.
4
star
59

balanced-employee-ip-agreement

An English law and Open Source friendly Balanced Employee IP Agreement - providing a balanced approach to assigning control of intellectual property (IP) created by UK company employees. See releases for PDF/MD files
4
star
60

flutterfire_ui

Dart
3
star
61

wtfork

Subscribe to and publish events between parent and child node processes using the standard node event emitter api or call parent methods directly from the child process and vice versa.
JavaScript
3
star
62

redis-writable

Fast conversion of commands and args to redis protocol writables.
JavaScript
3
star
63

firebase-functions-python-old

[WIP] Firebase SDK for Cloud Functions and Python.
Python
3
star
64

llm-gcp

Python
3
star
65

extensions-quickstart-js

Firebase Extensions quick start examples
TypeScript
3
star
66

firebase_performance_flutter_example

Testing
Dart
2
star
67

meta

General guidelines and documentation for the Invertase GitHub org.
1
star
68

ios-sdk-10-issues

iOS SDK 10 Firebase Storage issues
Objective-C
1
star
69

react-custom-event

React hook for window CustomEvent
JavaScript
1
star
70

docker-react-native-firebase-android

Dockerfile
1
star
71

oss-discord-community

Nothing to see here.
1
star
72

.github

Default community health files for Invertase.
1
star