Files
next.js/examples/cms-graphcms
f54d597563 examples: update gitignore files for parity for yarn recommendations (#71956)
## 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]>
2024-12-17 01:24:53 +00:00
..
2020-06-15 12:03:34 -05:00
2020-06-15 12:03:34 -05:00
2020-06-15 12:03:34 -05:00
2020-06-15 12:03:34 -05:00

A statically generated blog example using Next.js and GraphCMS

This example showcases Next.js's Static Generation feature using GraphCMS as the data source.

Demo

https://next-blog-graphcms.vercel.app/

Deploy your own

Once you have access to the environment variables you'll need, deploy the example using Vercel:

Deploy with Vercel

How to use

Execute create-next-app with npm, Yarn, or pnpm to bootstrap the example:

npx create-next-app --example cms-graphcms cms-graphcms-app
yarn create next-app --example cms-graphcms cms-graphcms-app
pnpm create next-app --example cms-graphcms cms-graphcms-app

Configuration

Step 1. Create an account and a project in GraphCMS

First, create an account in GraphCMS.

Step 2. Create a new GraphCMS project

After creating an account, create a new project from the Blog Starter template - be sure to include the example content.

Step 3. Set up 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

Inside your project dashboard, navigate to Settings > API Access page.

Then set each variable in .env.local:

  • GRAPHCMS_PROJECT_API: Set it to the API endpoint under Endpoints, at the top of the page.
  • GRAPHCMS_PROD_AUTH_TOKEN: Copy the NEXT_EXAMPLE_CMS_GCMS_PROD_AUTH_TOKEN token under Existing tokens, at the bottom of the page. This will only query content that is published.
  • GRAPHCMS_DEV_AUTH_TOKEN: Copy the NEXT_EXAMPLE_CMS_GCMS_DEV_AUTH_TOKEN token under Existing tokens, at the bottom of the page. This will only query content that is in draft.
  • GRAPHCMS_PREVIEW_SECRET can be any random string (but avoid spaces), like MY_SECRET - this is used for Preview Mode.

Step 4. Run Next.js in development mode

npm install
npm run dev

# or

yarn install
yarn dev

Your blog should be up and running on http://localhost:3000! If it doesn't work, post on GitHub discussions.

Step 5. Try preview mode

In GraphCMS, go to one of the posts in your project and:

  • Update the title. For example, you can add [Draft] in front of the title.
  • After you edit the document save the article as a draft, but DO NOT click Publish. By doing this, the post will be in the draft stage.

Now, if you go to the post page on localhost, you won't see the updated title. However, if you use Preview Mode, you'll be able to see the change (Documentation).

To view the preview, transform the url to the following format: http://localhost:3000/api/preview?secret=<YOUR_SECRET_TOKEN>&slug=<SLUG_TO_PREVIEW> where <YOUR_SECRET_TOKEN> is the same secret you defined in the .env.local file and <SLUG_TO_PREVIEW> is the slug of one of the posts you want to preview.

You should now be able to see the updated title. To exit the preview mode, you can click on "Click here to exit preview mode" at the top.

Step 6. 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.

Deploy from Our Template

Alternatively, you can deploy using our template by clicking on the Deploy button below.

Deploy with Vercel