Confluence source for Gridsome.
yarn:
yarn add gridsome-source-confluence
npm:
npm install gridsome-source-confluence
gridsome.config.js
module.exports = {
plugins: [
{
use: 'gridsome-source-confluence',
options: {
base_url: "https://example.atlassian.net",
space_key: "AS",
debug: true,
public_only: true,
retry_request: true
download_images: true
}
}
],
}
Option | Explanation | Default | Example | Required |
---|---|---|---|---|
base_url |
The base URL of your Confluence instance | - | https://example.atlassian.net | |
space_key |
Force spaceKey(s) comma separated | - | "AX,BG" | |
public_only |
Only retrieve public confluence pages | false | false | |
prefix |
Prefix of all types | Confluence | false | |
download_images |
Download images and replace img url | false | true | |
username |
Username for the private confluence page | - | johndoe@atlassian.net | required if public_only is false |
password |
Password for the private confluence page | - | supersecretpassword | required if public_only is false |
retry_request |
Retry failed request | false | true | |
debug |
Show debug information | false | true |
You can automaticly create pages based on the Confluence data.
gridsome.server.js
module.exports = function (api) {
api.createPages(async ({ graphql, createPage }) => {
const { data } = await graphql(`{
allConfluenceParent {
edges {
node {
title
body
slug
}
}
}
allConfluenceChild {
edges {
node {
title
body
slug
}
}
}
}`)
data.allConfluenceParent.edges.forEach(({ node }) => {
createPage({
path: `${node.slug}`,
component: './src/templates/ConfluenceBody.vue',
context: {
body: node.body,
title: node.title
}
})
})
data.allConfluenceChild.edges.forEach(({ node }) => {
createPage({
path: `${node.slug}`,
component: './src/templates/ConfluenceBody.vue',
context: {
body: node.body,
title: node.title
}
})
})
})
}
src/templates/ConfluenceBody.vue
<template>
<Layout>
<h1>{{ $context.title }}</h1>
<div v-html="$context.body"></div>
</Layout>
</template>