## What? Update examples `.gitignore` files for parity with [Yarn's official recommendations](https://v3.yarnpkg.com/getting-started/qa#which-files-should-be-gitignored), accounting for Yarn's modern Plug-n-Play functionality. ## Why? New projects initialized with `create-next-app` presently add various extraneous files from the Yarn cache to the initial commit. This is most notable in the case of the Next SWC binary, which may exceed 100M in some environments (empirically, 64-bit Darwin and WSL2 Ubuntu, and very probably other unix/linux environments), and prevent users from pushing their new projects to free GitHub repositories without rewriting the commit history to exclude the extraneous files, or unnecessarily setting up Git LFS to include them. ## How? I have errored on the side of exclusion to enable users to push their CNA projects to GitHub as-is and for parity with other package managers, while still providing the opportunity to opt in to additional functionality provided by modern Yarn. These changes follow the recommendations for **non**-[Zero-Install](https://yarnpkg.com/features/caching#zero-installs) configurations, as Zero-Install functionality is an extension on top of the base package manager experience, and may necessitate additional configuration and present additional complications for unsuspecting users, so I think it's best left up to the user to opt-in. On account of the majority of publicly available Next.js-based projects comprising general consumer-facing websites, it is my belief that the majority of Next projects would not benefit from Yarn's Zero-Install functionality, and that explicitly facilitating it by default would break status quo with all other non-Yarn CNA projects. Contrary to the example `.gitignore`s provided by Yarn, I've excluded the `.yarn/sdks` directory as it contains IDE-specific tooling; I feel it would be presumptuous for an environmentally-agnostic tool to target and provide package-manager-specific tooling for specific editors. This too should be left to the user to opt-in to and provide for their project if they deem necessary. I have retained the current `.gitignore`'s exclusion of the `/.pnp` directory for backwards compatibility with older versions of Yarn (the files therein have since been reallocated to the `.yarn` directory addressed by these changes, but I am not clear on when that delineation occurred or the prevalence of Yarn installations which depend on the former convention). Maintaining the exclusion here, in the worst case, implies additional downloads (on an order of magnitude merely similar to using npm from the outset) rather than failure. CC: @samcx ### Adding or Updating Examples - [x] The "examples guidelines" are followed from our contributing doc https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md - [x] Make sure the linting passes by running `pnpm build && pnpm lint`. See https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md Co-authored-by: Sam Ko <[email protected]>
Next.js and Auth0 Example
This example shows how you can use @auth0/nextjs-auth to easily add authentication support to your Next.js application. It tries to cover a few topics:
- Signing in
- Signing out
- Loading the user on the server side and adding it as part of SSR (
pages/advanced/ssr-profile.tsx) - Loading the user on the client side and using fast/cached SSR pages (
pages/index.tsx) - Loading the user on the client side and checking authentication CSR pages (
pages/profile.tsx) - Loading the user on the client side by accessing API (Serverless function) CSR pages (
pages/advanced/api-profile.tsx) - Creates route handlers under the hood that perform different parts of the authentication flow (
pages/auth/[...auth0].tsx)
Read more: https://auth0.com/blog/ultimate-guide-nextjs-authentication-auth0/
How to use
Execute create-next-app with npm, Yarn, or pnpm to bootstrap the example:
npx create-next-app --example auth0 auth0-app
yarn create next-app --example auth0 auth0-app
pnpm create next-app --example auth0 auth0-app
Configuring Auth0
- Go to the Auth0 dashboard and create a new application of type Regular Web Applications and make sure to configure the following
- Go to the settings page of the application
- Configure the following settings:
- Allowed Callback URLs: Should be set to
http://localhost:3000/api/auth/callbackwhen testing locally or typically tohttps://myapp.com/api/auth/callbackwhen deploying your application. - Allowed Logout URLs: Should be set to
http://localhost:3000/when testing locally or typically tohttps://myapp.com/when deploying your application.
- Save the settings
Set up environment variables
To connect the app with Auth0, you'll need to add the settings from your Auth0 application as environment variables
Copy the .env.local.example file in this directory to .env.local (which will be ignored by Git):
cp .env.local.example .env.local
Then, open .env.local and add the missing environment variables:
AUTH0_ISSUER_BASE_URL- Can be found in the Auth0 dashboard undersettings. (Should be prefixed withhttps://)AUTH0_CLIENT_ID- Can be found in the Auth0 dashboard undersettings.AUTH0_CLIENT_SECRET- Can be found in the Auth0 dashboard undersettings.AUTH0_BASE_URL- The base url of the application.AUTH0_SECRET- Has to be at least 32 characters. You can use this generator to generate a value.
Deploy on Vercel
You can deploy this app to the cloud with Vercel (Documentation).
Deploy Your Local Project
To deploy your local project to Vercel, push it to GitHub/GitLab/Bitbucket and import to Vercel.
Important: When you import your project on Vercel, make sure to click on Environment Variables and set them to match your .env.local file.