Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/spences10/react-seo-component

A React SEO component
https://github.com/spences10/react-seo-component

component gatsby react react-helmet seo typescript

Last synced: about 1 month ago
JSON representation

A React SEO component

Awesome Lists containing this project

README

        

# React SEO Component

[![CodeFactor](https://www.codefactor.io/repository/github/spences10/react-seo-component/badge)](https://www.codefactor.io/repository/github/spences10/react-seo-component)
![bundlephobia min](https://badgen.net/bundlephobia/min/react-seo-component)
![bundlephobia minzip](https://badgen.net/bundlephobia/minzip/react)

Use it for adding canonical links, metadata and OpenGraph information
to your React projects!

If you are rendering client side (not using Gatsby, or Next.js static
routes) then you can use [react-snap] to create your static HTML.

This is primarily targeted for use in Gatsby sites.

## Use it!

Install it from npm!

```bash
yarn add react-seo-component
# peer dependency of react helmet
yarn add react-helmet
```

If you are using it with Gatsby you will also need to install the
Gatsby plugin:

```bash
yarn add react-seo-component
yarn add react-helmet
yarn add gatsby-plugin-react-helmet
# or in one command
yarn add react-seo-component react-helmet gatsby-plugin-react-helmet
```

This will create the meta tags at build time.

**Examples:**

For an index page:

```jsx

```

For a blog post:

```jsx

```

## Props

| Prop | Type | Default |
| --------------- | ------------------------------- | ------------ |
| title | Page title | '' |
| titleTemplate | Page Title + Site title | '' |
| titleSeparator | Between Page Title + Site title | · |
| description | Page description | '' |
| pathname | Full Page URL | '' |
| article | `article` or `website` | `website` |
| image | Full image URL | '' |
| siteLanguage | Content Language | `en` |
| siteLocale | Content Locale | `en_gb` |
| twitterUsername | can be empty | '' |
| author | can _not_ be empty | 'J Doe' |
| datePublished | ISO date string | `Date.now()` |
| dateModified | ISO date string | `Date.now()` |

## To test locally

Use `npm pack` or `yarn pack` to create a `.tgz` of the project you
can install locally on your project to test with.

```bash
# from here
yarn pack
# copy to project to test
cp react-seo-component-2.0.1.tgz ../project-to-test-with/
# ~/project-to-test-with
yarn add file:react-seo-component-2.0.1.tgz
```

## Thanks:

- **[LekoArts]** for the initial components detailed in his Gatsby
[Prismic starter].

- **[Leigh Halliday]** for the [primer video] on using [TSDX]

- **[Jared Palmer]** for [TSDX]

## Resources

https://medium.com/recraftrelic/building-a-react-component-as-a-npm-module-18308d4ccde9

https://github.com/recraftrelic/dummy-react-npm-module/blob/master/package.json

[lekoarts]: https://github.com/LekoArts
[prismic starter]: https://github.com/LekoArts/gatsby-starter-prismic
[jared palmer]: https://github.com/jaredpalmer
[leigh halliday]: https://github.com/leighhalliday
[tsdx]: https://github.com/jaredpalmer/tsdx
[primer video]: https://www.youtube.com/watch?v=V3XZYC8zmvo
[react-snap]: https://github.com/stereobooster/react-snap