Cloudflare Docs
Pages
Edit this page on GitHub
Set theme to dark (⇧+D)

Deploy a Nuxt site

Nuxt is a web framework making web Vue.js-based development simple and powerful.

In this guide, you will create a new Nuxt application and deploy it using Cloudflare Pages.

​​ Create a new project

Use the create-cloudflare CLI (C3) to set up a new project. C3 will create a new project directory, initiate Nuxt’s official setup tool, and provide the option to deploy instantly.

To use create-cloudflare to create a new Nuxt project, run the following command:

$ npm create cloudflare@latest my-nuxt-app -- --framework=nuxt

create-cloudflare will then install dependencies, including the Wrangler CLI, and ask you setup questions.

After you have installed your project dependencies, start your application:

$ npm run dev

​​ Before you continue

All of the framework guides assume you already have a fundamental understanding of Git. If you are new to Git, refer to this summarized Git handbook on how to set up Git on your local machine.

If you clone with SSH, you must generate SSH keys on each computer you use to push or pull from GitHub.

Refer to the GitHub documentation and Git documentation for more information.

​​ Create a GitHub repository

Create a new GitHub repository by visiting repo.new. After creating a new repository, prepare and push your local application to GitHub by running the following commands in your terminal:

$ git init
$ git remote add origin https://github.com/<your-gh-username>/<repository-name>
$ git add .
$ git commit -m "Initial commit"
$ git branch -M main
$ git push -u origin main

​​ Deploy with Cloudflare Pages

​​ Deploy via the create-cloudflare CLI (C3)

If you use create-cloudflare(C3) to create your new Nuxt project, C3 will install all dependencies needed for your project and prompt you to deploy your project via the CLI. If you deploy, your site will be live and you will be provided with a deployment URL.

​​ Deploy via the Cloudflare dashboard

  1. Log in to the Cloudflare dashboard and select your account.
  2. In Account Home, select Workers & Pages > Create application > Pages > Connect to Git.

You will be asked to authorize access to your GitHub account if you have not already done so. Cloudflare needs this so that it can monitor and deploy your projects from the source. You may narrow access to specific repositories if you prefer; however, you will have to manually update this list within your GitHub settings when you want to add more repositories to Cloudflare Pages.

Select the new GitHub repository that you created and, in the Set up builds and deployments section, provide the following information:

Configuration optionValue
Production branchmain
Build commandnpm run build
Build directorydist

Optionally, you can customize the Project name field. It defaults to the GitHub repository’s name, but it does not need to match. The Project name value is assigned as your *.pages.dev subdomain.

After completing configuration, click the Save and Deploy button.

You will see your first deploy pipeline in progress. Pages installs all dependencies and builds the project as specified.

Cloudflare Pages will automatically rebuild your project and deploy it on every new pushed commit.

Additionally, you will have access to preview deployments, which repeat the build-and-deploy process for pull requests. With these, you can preview changes to your project with a real URL before deploying them to production.

​​ Use bindings in your Nuxt application

A binding allows your application to interact with Cloudflare developer products, such as KV, Durable Object, R2, and D1.

In Nuxt, add server-side code via Server Routes and Middleware. The defineEventHandler() method is used to define your API endpoints in which you can access Cloudflare’s context via the provided context field. The context field allows you to access any bindings set for your application.

The following code block shows an example of accessing a KV namespace in Nuxt.

src/my-endpoint.get.ts
export default defineEventHandler(({ context }) => {
// the type `KVNamespace` comes from the @cloudflare/workers-types package
const MY_KV: KVNamespace = context.cloudflare.env.MY_KV;
return {
// ...
};
});

​​ Learn more

By completing this guide, you have successfully deployed your Nuxt site to Cloudflare Pages. To get started with other frameworks, refer to the list of Framework guides.