# Project configuration

You can configure project-wide settings in a **takomo.yml** file that you place in the project root directory.&#x20;

## Required Takomo version

You specify the required Takomo version with the `requiredVersion` property. It accepts a NPM [semver](https://www.npmjs.com/package/semver) compatible version range.

**Example**

Require Takomo version 3.4.0 or above:

{% code title="takomo.yml" %}

```yaml
requiredVersion: ">=3.4.0"
```

{% endcode %}

## Allowed regions

By default, the supported regions are hardcoded in Takomo's codebase. A new Takomo version is released whenever AWS launches new regions.

In case you need to use an older Takomo version that does not include some regions launched after its release, you may specify the missing regions yourself using this property.&#x20;

You can also use this property to list only the regions you intend to use to prevent deploys to any other region.

#### Example

Allow only these four regions:

{% code title="takomo.yml" %}

```yaml
regions:
  - us-east-1
  - eu-west-1
  - eu-central-1
  - eu-north-1 
```

{% endcode %}

## Feature flags

You can enable and disable certain Takomo features by specifying feature flags under the features property. Here are the available feature flags

| Feature flag              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| deploymentTargetsUndeploy | <p>Set <strong>false</strong> to disable <a href="https://targets.takomo.io/command-line-usage/undeploy-targets">undeploy deployment targets</a> command.</p><p></p><p>You might want to disable this command to add an extra confirmation step to prevent removing targets unintentionally.</p><p></p><p>You can override this setting by giving <code>--feature deploymentTargetsUndeploy=true</code> option from command-line when executing <a href="https://targets.takomo.io/command-line-usage/undeploy-targets">undeploy deployment targets</a> command.</p> |
| deploymentTargetsTearDown | <p>Set false to disable <a href="https://targets.takomo.io/command-line-usage/tear-down-targets">tear down deployment targets</a> command.<br></p><p>You might want to disable this command to add an extra confirmation step to prevent removing targets unintentionally.</p><p></p><p>You can override this setting by giving <code>--feature deploymentTargetsTearDown=true</code> option from command-line when executing <a href="https://targets.takomo.io/command-line-usage/tear-down-targets">tear down deployment targets</a> command.</p>                 |

#### Example

Disable undeploy deployment targets command:

{% code title="takomo.yml" %}

```yaml
features:
  deploymentTargetsUndeploy: false
```

{% endcode %}

## Extending project configuration

You can make a Takomo project configuration file to inherit configuration from another file. Inheriting configuration becomes useful, for example, when you have a monorepo containing multiple Takomo projects, each having its own configuration and sharing some common properties with others. You can place the common properties in a parent file that others then inherit.

You use the `extends` property to make a project configuration file inherit configuration from another file:

{% code title="takomo.yml" %}

```yaml
extends: ../my-parent-config.yml
```

{% endcode %}
