@last-rev/contentful-fs-loader
TypeScript icon, indicating that this package has built-in type declarations

0.4.0 • Public • Published

Overview

This library exports a single default function which creates a set of data loaders and fetchers for loading contentful structured content from a file system.

Requirements

You must have a directory to which Contentful content has been synced. Please see the documentation for LastRev's cms-sync CLI which will generate this structure for you.

The directory should follow the following structure

dir
└── {contentful space id}
    └── { contentful environment name}
        └── { preview|production }
            ├── assets
            |   ├── {assetId}.json
            |   └── ...
            ├── entries
            |   ├── {entryId}.json
            |   └── ...
            ├── entry_ids_by_content_type
            |   ├── {entryId}
            |   └── ...
            └── content_types
                ├── {contentTypeId}.json
                └── ...

Usage

import createLoaders from '@last-rev/contentful-fs-loader';

async function () {
  const {
    entryLoader,
    assetLoader,
    entriesByContentTypeLoader,
    fetchAllContentTypes
  } = await createLoaders(
    './graphql/content' // root directory
    'saasdfgb34r8ffg7rtt', // contentful space ID
    'master', // contentful environment
    'preview' // one of 'preview' or 'production'
  );
}

entryLoader, assetLoader, and entriesByContentTypeLoader are all instances of dataloader. entryLoader and assetLoader are both keyed by contentful ID (string), and entriesByContentTypeLoader is keyed by a Contentful content type ID (string).

const myEntry = await entryLoader('my-content-id-1234');
const myAsset = await assetLoader('my-asset-id-5432');
const myEntries =  await entriesByContentTypeLoader('pageGeneral');

the other two functions, fetchAllPages and fetchAllContent are just convenience functions that return a list of all page content items (entries which have a slug field) and all content types.

Dependencies (6)

Dev Dependencies (8)

Package Sidebar

Install

npm i @last-rev/contentful-fs-loader

Weekly Downloads

118

Version

0.4.0

License

ISC

Unpacked Size

20.4 kB

Total Files

12

Last publish

Collaborators

  • maxtechera.lastrev
  • tharris
  • justinlastrev
  • jaimelastrev
  • bradtaylorsf