89b8d5856e
Upgrade remark-html dependency to resolve the critical vulnerability. Newer versions like 15.0.1 do not work with this example but version 13.0.2 fixes the security issue and still works. ``` === npm audit security report === # Run npm install remark-html@15.0.1 to resolve 1 vulnerability SEMVER WARNING: Recommended action is a potentially breaking change ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ Critical │ Unsafe defaults in `remark-html` │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ remark-html │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ remark-html │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ remark-html │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://github.com/advisories/GHSA-9q5w-79cv-947m │ └───────────────┴──────────────────────────────────────────────────────────────┘ ``` <!-- Thanks for opening a PR! Your contribution is much appreciated. In order to make sure your PR is handled as smoothly as possible we request that you follow the checklist sections below. Choose the right checklist for the change that you're making: --> ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [ ] Make sure the linting passes by running `yarn lint` |
||
---|---|---|
.. | ||
_posts | ||
components | ||
lib | ||
pages | ||
public | ||
styles | ||
.gitignore | ||
package.json | ||
postcss.config.js | ||
README.md | ||
tailwind.config.js |
A statically generated blog example using Next.js and Markdown
This example showcases Next.js's Static Generation feature using Markdown files as the data source.
The blog posts are stored in /_posts
as Markdown files with front matter support. Adding a new Markdown file in there will create a new blog post.
To create the blog posts we use remark
and remark-html
to convert the Markdown files into an HTML string, and then send it down as a prop to the page. The metadata of every post is handled by gray-matter
and also sent in props to the page.
Preview
Preview the example live on StackBlitz:
Demo
https://next-blog-starter.vercel.app/
Deploy your own
Deploy the example using Vercel:
Related examples
- WordPress
- DatoCMS
- Sanity
- TakeShape
- Prismic
- Contentful
- Strapi
- Agility CMS
- Cosmic
- ButterCMS
- Storyblok
- GraphCMS
- Kontent
- Umbraco Heartcore
- Builder.io
How to use
Execute create-next-app
with npm or Yarn to bootstrap the example:
npx create-next-app --example blog-starter blog-starter-app
or
yarn create next-app --example blog-starter blog-starter-app
Your blog should be up and running on http://localhost:3000! If it doesn't work, post on GitHub discussions.
Deploy it to the cloud with Vercel (Documentation).
Notes
This blog-starter uses Tailwind CSS (v3.0).