An ORM layer for Contentful


stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
111May 26, 2021Aug 24, 2018Minified + gzip package size for @autolist/contentful in KB


Contentful Client

Test Coverage Maintainability


Using npm:

$ npm i --save @autolist/contentful

Using yarn:

$ yarn add @autolist/contentful


import { Item, Params } from '@autolist/contentful`
import { createClient } from 'contentful'

class Article extends Item {

// You must register all classes with the parent class if you
// want to override behavior for specific content types,
// so that we can look them up later for association parsing.
// Otherwise, the default Item class will be used.
Item.classes['article'] = Article

class ArticleParams extends Params {
  static fields = ['slug']

const params = new ArticleParams({
  // Fields will be inferred and translated to contentful params
  slug: 'our-slug',
  // Skip is inferred from a combination of page and limit
  page: 2,
  limit: 10,
  // 'en' locale is assumed to be shorthand for 'en-US'
  locale: 'en',
  // Relationship queries are too variable to reliably
  // infer, so pass them in by hand
  'fields.parentPage.sys.contentType.sys.id': 'page',
  'fields.parentPage.fields.slug': 'news-and-analysis'
}, Article)

const client = createClient(myCredentials)

const contentfulResponse = await client.getEntries(paramsObject.toJSON())

const [article] = Article.load(contentfulResponse)


:hammer_and_wrench: Development

Install dependencies:


:robot: Testing


yarn test



yarn build


  1. Bump version in package.json
  2. npm publish (Use npm and 2FA to publish until https://github.com/yarnpkg/yarn/issues/4904 is resolved)

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.