# Change build settings

Adjust how Nuvlo builds and releases a static site, PHP site or Node.js app: folders, build command, package manager, Node.js version and how many releases to keep.

## Before you start

- A static site, PHP site or Node.js app in Nuvlo.
- Permission to manage sites in your Nuvlo account.

## Step 1: Open the build settings

Open the site from [Sites](https://app.nuvlo.dev/dashboard/sites), go to the **Settings** tab and stay on **General**. Scroll to the **Build and deployment** card. On the **Overview** tab, **Build settings** at the bottom of the **Production** card leads to the same place.

## Step 2: Edit the fields

**Framework** is shown for reference; it was set when the site was created. For a static or PHP site, the card shows these fields:

| Field | What it does |
| --- | --- |
| **Root directory** | For monorepos, the folder with the site. |
| **Web directory** (PHP) | The folder Nginx serves, relative to the root directory. |
| **Publish directory** (static) | The folder that is published. Empty publishes the root directory. |
| **Build command** (static) | The command that builds the site, such as `npm run build`. Empty publishes the files as they are. |
| **Package manager** | npm, pnpm, yarn or bun, for installing Node dependencies before a build. |
| **Node.js for builds** | The Node.js version used for building. |
| **Releases to keep** | 2–20. The live release and the one before it are always kept. |
| **Deploy commands** (PHP) | Commands that run as the site user in each new release before it goes live. A failing command stops the deploy and keeps the current release. |

![The Build and deployment card of a PHP site with the folder fields, package manager, Node.js version, releases to keep and deploy commands](https://app.nuvlo.dev/docs/shots/build-settings--static-php.webp)

For a Node.js app, the card has **Root directory**, **Build command** (empty uses the framework default), **Output directory** (relative to the root directory), **Package manager**, **Node.js version** and **Releases to keep**. Below them is **Persistent storage**, described in [Keep data between releases](https://app.nuvlo.dev/docs/persistent-paths).

When the chosen Node.js version no longer receives security updates, a warning below the field names the version to upgrade to.

![The Build and deployment card of a Node.js app with its fields and the Persistent storage section](https://app.nuvlo.dev/docs/shots/build-settings--node-app.webp)

## Step 3: Save and redeploy

Click **Save build settings**. The changes apply to the next deployment; the live site isn't changed yet.

For a Node.js app, the button changes to **Redeploy to apply**. For static and PHP sites, deploy with **Deploy latest** at the top of the page, push a commit, or upload a new version.

## Good to know

Routing, PHP version and PHP limits are on the **PHP** tab (PHP sites) or **Routing** tab (static sites). See [Change PHP and routing settings](https://app.nuvlo.dev/docs/site-runtime-settings).

Older Node.js apps that still deploy in place show a **Deploys** setting. Choosing **Atomic releases (Recommended)** reorganizes the site's folder on the server during the next deploy. This runs once and can't be undone by switching back, so [take a backup](https://app.nuvlo.dev/docs/back-up-a-site) first.

---
Source: https://app.nuvlo.dev/docs/build-settings
