ConceptsBuilds & runtimes
The build of a static site
A static site can have a build step. Ferry runs it with the tools of your project.
A build command on the service gives a build step.
1 / 3
With no build command and no build script, there is no build step.
The tools of the build
Ferry chooses the toolchain from the files of the project.
| Project | Toolchain |
|---|---|
package.json | Node.js, with the package manager of the project |
requirements.txt, pyproject.toml or Pipfile (MkDocs, Pelican…) | Python |
Gemfile (Jekyll…) | Ruby |
A hugo.toml / hugo.yaml / hugo.json, or a build command that runs hugo | Hugo on Alpine |
go.mod | Go |
| None of these | A plain node:22-alpine image |
A runtime that you set (--runtime python, for example) chooses the toolchain.
A build command that installs dependencies
Use npm ci --include=dev
The build command runs with NODE_ENV=production. Thus npm ci does not install the devDependencies. Your build tools are in them.
ferry update docs --build-cmd "cd docs && npm ci --include=dev && npm run build" --publish-dir docs/outThis case occurs when your build command installs the dependencies, for example in a subdirectory. Ferry does not install them there for you.