Ready to be used changelog theme
- Theme UI for styling
- PrismJS highlighting
- Gatsby Image
- Releases in MDX
- Tags
- Static pages for non post types
- SEO friendly
- Fully customizable through
gatsby-config.js
,gatsby-plugin-theme-ui
and shadow components - Linting with ESLint and Stylelint
- Code formatting with Prettier
To use this theme in your Gatsby sites, follow these instructions:
-
Install the theme
# npm npm install --save gatsby-theme-changelog # yarn yarn add gatsby-theme-changelog
-
Add the theme to your
gatsby-config.js
:module.exports = { plugins: ["gatsby-theme-changelog"] };
-
Start your site
gatsby develop
module.exports = {
plugins: [
{
resolve: " gatsby-theme-changelog",
options: {
basePath: "", // base url "/"
tagsPath: "", // tags url "/tags"
contentPath: "", // content url for posts"/content/posts"
assetPath: "" // assets url "/content/assets"
}
}
],
siteMetadata: {
url: "https://abdessalam.dev",
title: "My web project",
author: "Abdessalam",
description: "Web project changelog",
logo: "logo-icon.png", // logo in header
locale: "en",
themeConfig: {
themeSwitcher: true, // enable theme switcher
loadMorePosts: false, // enable load more posts
postsPerPage: 10, // posts to display per page
postsIncrementBy: 5 // posts increment value
}
}
};
You can override theme components using Component Shadowing
-
Create a folder with theme name
gatsby-theme-changelog
-
Override any component you want by creating a new one and its css file, for example
Nav.js
andNav.css
src/gatsby-theme-changelog/components/Nav.js
- You can also override theme-ui theme style by creating
gatsby-plugin-theme-ui
folder and new object style or components or merge with theme file inindex.js
src/gatsby-plugin-theme-ui
import baseTheme from "gatsby-theme-changelog/src/gatsby-plugin-theme-ui";
import merge from "lodash.merge";
export default merge({}, baseTheme, {
colors: {},
styles: {}
});
- You can also override or add new global css styles in assets as they are imported in
globalStyle.js
which has an importAll helper
import { importAll } from "./helpers";
importAll(require.context("../assets/", true, /\.css$/));
Example of release post in content/posts/[POST_TITLE]/index.mdx
You can create pages by passing type to page
---
type: post
title: v1.0.0
date: 2019-07-22
draft: false
author: Abdessalam
tags:
- New
---
Content goes here
.
├── node_modules
├── src
| ├── assets
| ├── components
| | ├── Layout.js
| | ├── Layout.css
| | ├── ...
| | └── SEO.js
| ├── gatsby-plugin-theme-ui
| ├──templates
| | ├── page.js
| | ├── posts.js
| | ├── post.js
| | └── tag.js
| └── utils
| ├── globalStyle.js
| └── helpers.js
├── .gitignore
├── .prettierrc.js
├── .eslintrc.js
├── .stylelintrc.config.js
├── package.json
├── README.md
└── LICENSE
Contributions, issues and feature requests are welcome !