---
title: Environment Variables
description:
  Learn more about all the environment variables Melos supports and also
  pre-populates.
---

# Environment Variables

These variables are available as environment variables in scripts run by
`melos exec`. They can also automatically replaced/injected on `melos exec`
commands e.g.
`melos exec --file-exists="./test_driver/MELOS_PARENT_PACKAGE_NAME_e2e.dart" --scope="*example*" -- echo hello`

## Defined by Melos

### `MELOS_ROOT_PATH`

The path to the mono-repo root

### `MELOS_PACKAGE_NAME`

The name of the package that's currently executing a script (when using
`melos exec`)

### `MELOS_PACKAGE_VERSION`

The version of the package that's currently executing a script (when using
`melos exec`)

### `MELOS_PACKAGE_PATH`

The path of the package that's currently executing a script (when using
`melos exec`).

### `MELOS_PARENT_PACKAGE_NAME`

The name of the parent package of the example that's currently being executed
in a script (when using `melos exec`).

### `MELOS_PARENT_PACKAGE_VERSION`

The version of the parent package of the example that's currently being executed
in a script (when using `melos exec`).

### `MELOS_PARENT_PACKAGE_PATH`

The path of the parent package of the example that's currently being executed
in a script (when using `melos exec`).

### `MELOS_PUBLISH_DRY_RUN`

Whether the current publish is a dry run or not. This is `true` when running
`melos publish --dry-run` and `false` otherwise.

#### What is a 'parent package'

If an example package exists in a directory that is a child of another package,
then its parent is the 'parent package'. For example; the package
`firebase_auth` has an `example` directory that is also a package, when running
a `melos exec` script in the `example` package then the parent package would be
`firebase_auth`.

Note, this 'parent package' functionality only currently works when the 'child
package' name ends with `example`.

## User Defined

### `MELOS_PACKAGES`

Define a comma delimited list of package names that Melos should focus on. This
will act as the `scope` global package filter, and it will override the `scope`
for all the filtering options defined in the `packageFilters` section.

### `MELOS_SDK_PATH`

The path to the Dart/Flutter SDK to use. This environment variable has
precedence over the `sdkPath` option in the root `pubspec.yaml`, but is
overridden by the command line option `--sdk-path`.
