Skip to content

staticwebdev/nextjs-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

10fbcce · Apr 18, 2023

History

40 Commits
Apr 18, 2023
Mar 24, 2022
Mar 24, 2022
May 1, 2020
May 1, 2020
May 1, 2020
Mar 24, 2022
May 1, 2020
Jul 6, 2022
Apr 18, 2023
Aug 5, 2021
Jul 6, 2022
Apr 18, 2023
Aug 5, 2021

Repository files navigation

Next.js Starter (Static Sites)

Azure Static Web Apps allows you to easily build Next.js apps in minutes. Use this repo with the Azure Static Web Apps Next.js tutorial to build and customize a new static site.

Running locally

To run locally, open the development server with the following command:

npm run dev

Next, open http://localhost:3000 in your browser to see the result.

For a more rich local development experience, refer to Set up local development for Azure Static Web Apps.

How it works

This starter application is configured to build a static site with dynamic routes.

Dynamic routes

The pages/project/[slug].js file implements code that tells Next.js what pages to generate based on associated data. In Next.js, each page powered by dynamic routes needs to implement getStaticPaths and getStaticProps to give Next.js the information it needs to build pages that match possible route values.

Inside getStaticPaths, each data object is used to create a list of paths all possible pages.

export async function getStaticPaths() {
  const paths = projects.map((project) => ({
    params: { path: project.slug },
  }))
  return { paths, fallback: false };
}

The getStaticProps function is run each time a page is generated. Based off the parameter values, the function matches the full data object to the page being generated. Once the data object is returned, it is used as the context for the generated page.

export async function getStaticProps({ params }) {
  const project = projects.find(proj => proj.slug === params.path);
  return { props: { project } };
}

Application configuration

The next.config.js file is set up to enforce trailing slashes on all page.

module.exports = {
    trailingSlash: true
};

Build scripts

The npm build script runs commands to not only build the application, but also generate all the static files to the out folder.

"scripts": {
  "dev": "next dev",
  "build": "next build && next export",
},

Note: If you use the Azure Static Web Apps CLI, copy the staticwebapp.config.json file to the out folder, and start the CLI from the out folder.