42 lines
952 B
JavaScript
42 lines
952 B
JavaScript
const path = require('path');
|
|
const select = require('unist-util-select');
|
|
const { head } = require('lodash');
|
|
|
|
const { isAStubRE } = require('../regEx');
|
|
|
|
const guideArticle = path.resolve(
|
|
__dirname,
|
|
'../../src/templates/Guide/GuideArticle.js'
|
|
);
|
|
|
|
exports.createGuideArticlePages = createPage => ({
|
|
node: {
|
|
htmlAst,
|
|
excerpt,
|
|
fields: { slug },
|
|
id
|
|
}
|
|
}) => {
|
|
let meta = {};
|
|
|
|
if (!isAStubRE.test(excerpt)) {
|
|
const featureImage = head(select(htmlAst, 'element[tagName=img]'));
|
|
meta.featureImage = featureImage
|
|
? featureImage.properties.src
|
|
: 'https://s3.amazonaws.com/freecodecamp' +
|
|
'/reecodecamp-square-logo-large.jpg';
|
|
|
|
const description = head(select(htmlAst, 'element[tagName=p]'));
|
|
meta.description = description ? description.children[0].value : '';
|
|
}
|
|
|
|
return createPage({
|
|
path: `/guide${slug}`,
|
|
component: guideArticle,
|
|
context: {
|
|
id,
|
|
meta
|
|
}
|
|
});
|
|
};
|