Build settings
Sevalla doesn’t read
engines in package.json, .nvmrc or netlify.toml: everything comes from these settings.
Update the build settings
1
Open the build strategy
In the sidebar, click Static sites, then click the site. Click the Settings tab and, under Build, click Update build strategy. The Deployments tab has the same Update build strategy button.
2
Change the settings
Update the fields, then click Update build strategy.
3
Deploy the site
Click the Deployments tab, click Deploy now, then click Deploy.


How a build runs
Each deployment runs in a new, isolated build container. The deployment’s log shows each step:- Fetch the source. Sevalla clones the deployment’s branch with its submodules and checks out the deployment’s commit (
Fetching source code from github..., thenSource code fetched successfully). It downloads Git LFS objects unless Git LFS is off. - Enter the root directory, if one is set.
- Install Node.js with nvm (
Set node version to: 22, thenNode version set successfully). - Install dependencies with the package manager your lockfile names (
Packages installed successfully). See Package managers. - Run the build command in bash, with
node_modules/.binon thePATH(Running build command: npm run build, thenBuild command succeeded). A command that exits with an error fails the deployment. - Check the publish directory. It must exist and hold at most 1 GB.
- Read
_redirectsand_headersfrom the publish directory, or else the root directory. See Redirects and Custom headers. - Upload and publish. Sevalla uploads the files that changed since earlier deployments, then switches the site to the new deployment (
Static site has been deployed successfully).
Build environment
Build time counts toward the company’s 600 free build minutes a month.
Node versions
Sites created before the major-version options can also show
16.20.0, 18.16.0 or 20.2.0, which the API still accepts. The build command, and an install command, require a Node version.
Package managers
Sevalla picks the package manager from the lockfile in the root directory, checking in this order:
Commit your lockfile so every build installs the same versions. To run your own install command instead, set
install_command with Update static site. Sevalla installs Yarn, pnpm and Bun globally before it runs it, so any of them works.
Framework detection
When you create a static site from a private repository, Sevalla readspackage.json at the root of the repository on the chosen branch. If it recognizes the framework, it turns the build on, fills in the build command and publish directory, sets the Node version to Latest LTS and shows Framework detected with the framework’s name. It checks in this order and uses the first match:
With a
yarn.lock file, the commands are yarn build and yarn generate. Sevalla doesn’t detect frameworks for public repositories, and it reads only the package.json at the repository root: for a site in a subfolder, fill in the fields yourself.
Settings for common static site generators
These are each tool’s usual defaults. Check your project’s configuration if you changed its output folder.Hugo and generators outside Node.js
The build container has no Hugo, Jekyll or Python. For Hugo, install it as an npm package so the build can run it:package.json
npm run build and the publish directory to public. Hugo themes added as Git submodules work: Sevalla clones submodules with the repository. For a generator you can’t install with npm, build the site yourself and commit the output, or deploy it as an application.
Publish files without a build
When the repository already holds the finished site, turn off Build site before publishing. Sevalla publishes the publish directory (or the root directory, if the publish directory is empty) as it is in the repository.Build a site in a subfolder
For a monorepo, set the Root directory to the site’s folder, for exampleapps/docs. The install and the build run there, Sevalla looks for the lockfile there, and the publish directory is relative to it: dist, not apps/docs/dist. To deploy only when the site’s files change, add the deploy path apps/docs/** (deploy paths are relative to the repository root).
What gets published
Every file in the publish directory, except:- Anything inside
.gitornode_modulesfolders. - Files and folders whose name starts with
.env, and.DS_Storefiles. - The
_redirectsand_headersfiles. Sevalla reads them instead of serving them.
.md, .markdown) as text/markdown.