A set of React and Node utilities for interfacing with LCN JAMStack services.
npm install law-centres-jamstackA set of React and Node utilities for interfacing with LCN JAMStack services.
To install law-centres-jamstack you need to :
1. yarn add law-centres-jamstack
2. Then install peer dependancies and set up required .env vars as below.
Below are the following documentations for the law-centre services used
The follow environment variables should be set:
``bash`
NEXT_PUBLIC_CONTENTFUL_SPACE_ID
NEXT_PUBLIC_CONTENTFUL_ACCESS_TOKEN
NEXT_PUBLIC_CONTENTFUL_PREVIEW_ACCESS_TOKEN
NEXT_PUBLIC_GLOBAL_CONTENTFUL_SPACE_ID # For global content spaces
NEXT_PUBLIC_GLOBAL_CONTENTFUL_ACCESS_TOKEN # For global content spaces
#### Fetching content
Content can be fetched via either the Rest or GraphQL APIs using various configuration options for the Contentful Client:
`js`
contentfulConfig.live // The Contentful space specific to your product
contentfulConfig.preview // Preview (unpublished) content from your space
contentfulConfig.global // For content common to all products
Fetching entries from the Rest API:
`js
import { contentfulConfig } from 'law-centres-jamstack'
const page = await require('contentful')
.createClient(contentfulConfig.global)
.getEntries({
content_type: 'page',
limit: 1,
include: 5,
'fields.slug': 'cookies',
})
.then((entry) => entry)
`
Fetching a collection from the GraphQL API:
`js
import { fetchContent, contentfulConfig } from 'law-centres-jamstack'
const response = await fetchContent(
{
sessionCollection(limit: 100) {
items {
slug
}
}
}
,`
contentfulConfig.live
)
#### Rendering RichText and embedded components
You can use the global renderer, and optionally add your own components specific to your app:
`js
import { renderRichText, ContentTypes } from 'law-centres-jamstack'
import { documentToReactComponents } from '@contentful/rich-text-react-renderer'
const customContentTypes = Object.assign(ContentTypes, {
customcomponent: (content, context) => {
return
Hi, world
documentToReactComponents(
richText,
renderRichText({
graphLinks: richText.links, // If content is fetched via GraphQL, include linked associations
ContentTypes: customContentTypes,
})
)
`
Simple utility script to provide a Auth0 management client:
`js`
const Auth0Manager = require('law-centres-jamstack/dist/utilities/Auth0Manager')
The follow environment variables should be set:
`bash`
AUTH0_CLIENT_DOMAIN
AUTH0_CLIENT_SECRET
AUTH0_CLIENT_ID
Provides configured Algolia clients to be used by your apps. You can either import the search client, or the management client:
`js`
import { algoliaClient } from 'law-centres-jamstack'
import { algoliaManagementClient } from 'law-centres-jamstack'
The follow environment variables should be set:
`bash`
NEXT_PUBLIC_ALGOLIA_ID
NEXT_PUBLIC_ALGOLIA_KEY
ALGOLIA_MANAGEMENT_KEY
If developing and using in another local project, use yalc to publish to a local store
- yalc publish
or to publish and push to all current dependant local projects, use
- yalc push
... and in your dependant project, use the local store with
- yalc add law-centres-jamstack
To compile your code, run
- npm run build.
To publish your package to npm, make sure you're logged in the correct account by running
- npm login.
Update the package version accordingly by using
- [npm version [patch | minor | major]](https://docs.npmjs.com/about-semantic-versioning)
Then publish your package by running
- npm publish`