Package Exports
- prismic-nodejs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (prismic-nodejs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
prismic-nodejs
Prismic.io support for NodeJS
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