Skip to content
This repository has been archived by the owner on Dec 14, 2023. It is now read-only.

Latest commit

 

History

History
80 lines (62 loc) · 2.81 KB

README.md

File metadata and controls

80 lines (62 loc) · 2.81 KB

⚠️ Deprecated

Use @prismicio/client instead.

prismic-nodejs

Prismic.io support for NodeJS

npm version Status Dependency Status

This is a set of helpers to use Prismic.io in a NodeJS application. Currently it only contains a helper to create a preview route. If you're starting from scratch, our NodeJS SDK is a good base.

Installation

npm install prismic-nodejs --save

Usage

const prismic = require('prismic-nodejs');
const PrismicConfig = require('./prismic-configuration');

The Prismic object is extended from the Javascript Kit, so any attribute of the official kit, for example Predicates, is also available in the object exposed by express-prismic.

It is recommended to create a middleware method that will fetch the Api object for your repository and expose data to your templates:

// This is the configuration for prismic.io
/*
 * Initialize prismic context and api
 */
app.use((req, res, next) => {
  Prismic.api(PrismicConfig.apiEndpoint, { accessToken: PrismicConfig.accessToken, req })
  .then((api) => {
    req.prismic = { api };
    res.locals.ctx = {
      endpoint: PrismicConfig.apiEndpoint,
      linkResolver: PrismicConfig.linkResolver,
    };
    next();
  }).catch((err) => {
    const message = err.status === 404 ? 'There was a problem connecting to your API, please check your configuration file for errors.' : `Error 500: ${err.message}`;
    res.status(err.status).send(message);
  });
});

You can then call it in your routes if you need to query your repository:

app.route('/').get((req, res) => {
  req.prismic.api.getByUID('page', 'get-started')
    .then((document) => {
      res.render('index-prismic', { document });
    })
    .catch((err) => {
    // Don't forget error management
      res.status(500).send(`Error 500: ${err.message}`);
    });
});

Previews

You can preview any document including drafts in your production site, securely. All you have to do is include this route:

app.route('/preview').get((req, res) => (
  Prismic.preview(req.prismic.api, PrismicConfig.linkResolver, req, res)
));

Then:

  • Configure the URL to that preview route in the settings of your repository
  • Make sure that the Prismic Toolbar is included in your views