Language support and tools
Cloudflare Pages’ build environment has broad support for a variety of languages, such as Ruby, Node.js, Python, PHP, and Go.
If you need to use a specific version of a language, (for example, Node.js or Ruby) you can specify it by providing an associated environment variable in your build configuration, or setting the relevant file in your source code.
The v2 build system ↗ announced in May 2023 brings several improvements to project builds. To migrate to this new version, configure your Pages project settings in the dashboard:
- Log in to the Cloudflare dashboard ↗ and select your account.
- Select Workers & Pages > in Overview, select your Pages project.
- Go to Settings > Build & deployments > Build system version and select the latest version.
Notably, we have made changes to the default versions of languages and tools that are included. To submit feedback on v2’s selection, missing tools and languages, or problems you are experiencing when migrating to v2, join the Cloudflare Developer Discord ↗.
If you were previously relying on the default versions of any languages or tools in the build system, your build may fail when migrating to v2. To fix this, you must specify the version you wish to use. Find details on how to do this for each of these languages and tools on this page. For example, if you were previously relying on the default version of Node.js in the v1 build system, to migrate to v2, you must specify that you need Node.js 12.18.0
by setting a NODE_VERSION
environment variable or by adding a .node-version
or .nvmrc
file to your project.
We are aware of some outstanding issues with the v2 build system that we intend on fixing:
- Specifying Node.js versions as codenames (for example,
hydrogen
orlts/hydrogen
). - Detecting Yarn version from
yarn.lock
file version. - Detecting pnpm version detection based
pnpm-lock.yaml
file version. - Detecting Node.js and package managers from
package.json
->"engines"
. pipenv
andPipfile
support.
In the following table, review the preinstalled versions for tools included in the Cloudflare Pages build environment, and how to override them as relevant:
Tool | Default version | Supported versions | Environment variable | File |
---|---|---|---|---|
Go | 1.21.0 | Any version | GO_VERSION | |
Node.js | 18.17.1 | Any version | NODE_VERSION | .nvmrc, .node-version |
Python | 3.11.5 | Any version | PYTHON_VERSION | .python-version, runtime.txt |
Ruby | 3.2.2 | Any version | RUBY_VERSION | .ruby-version |
Tool | Default version | Supported versions | Environment variable | File |
---|---|---|---|---|
Clojure | ||||
Elixir | 1.7 | 1.7 only | ||
Erlang | 21 | 21 only | ||
Go | 1.14.4 | Any version | GO_VERSION | |
Java | 8 | 8 only | ||
Node.js | 12.18.0 | Any version | NODE_VERSION | .nvmrc, .node-version |
PHP | 5.6 | 5.6, 7.2, 7.4 only | PHP_VERSION | |
Python | 2.7 | 2.7, 3.5, 3.7 only | PYTHON_VERSION | runtime.txt, Pipfile |
Ruby | 2.7.1 | Any version between 2.6.2 and 2.7.5 | RUBY_VERSION | .ruby-version |
Swift | 5.2.5 | Any 5.x version | SWIFT_VERSION | .swift-version |
.NET | 3.1.302 |
Many common tools have been preinstalled in the Cloudflare Pages build environment. The environment variable available for overriding the preinstalled version is specified in the following table, as available:
Tool | Default version | Supported versions | Environment variable |
---|---|---|---|
Bundler | 2.4.10 | Corresponds with Ruby version | |
Embedded Dart Sass | 1.62.1 | Up to 1.62.1 | EMBEDDED_DART_SASS_VERSION |
gem | 3.4.10 | Corresponds with Ruby version | |
Hugo | 0.118.2 | Any version | HUGO_VERSION |
npm | 9.6.7 | Corresponds with Node.js version | |
pip | 23.2.1 | Corresponds with Python version | |
pipx | 1.2.0 | ||
pnpm | 8.7.1 | Any version | PNPM_VERSION |
Poetry | 1.6.1 | ||
Yarn | 3.6.3 | Any version | YARN_VERSION |
Bun | 1.0.1 | Any version | BUN_VERSION |
Tool | Default version | Supported versions | Environment variable |
---|---|---|---|
Boot | 2.5.2 | 2.5.2 | |
Bower | |||
Cask | |||
Composer | |||
Doxygen | 1.8.6 | ||
Emacs | 25 | ||
Gutenberg | (requires environment variable) | Any version | GUTENBERG_VERSION |
Hugo | 0.54.0 | Any version | HUGO_VERSION |
GNU Make | 3.8.1 | ||
ImageMagick | 6.7.7 | ||
jq | 1.5 | ||
Leiningen | |||
OptiPNG | 0.6.4 | ||
npm | Corresponds with Node.js version | Any version | NPM_VERSION |
pip | Corresponds with Python version | ||
Pipenv | Latest version | ||
sqlite3 | 3.11.0 | ||
Yarn | 1.22.4 | Any version from 0.2.0 to 1.22.19 | YARN_VERSION |
Zola | (requires environment variable) | Any version from 0.5.0 and up | ZOLA_VERSION |
If you want to set a specific version of a framework your Cloudflare Pages project is using, note that Pages will respect your package manager of choice during your build process. For example, if you use Gatsby, your package.json
should indicate a version of the gatsby
npm package, which will be installed using npm install
as your project builds on Cloudflare Pages.
Cloudflare Pages builds are run in a gVisor ↗ container.
Build environment | Ubuntu |
Architecture | x86_64 |
Build environment | Ubuntu |
Architecture | x86_64 |