Files
shopify-storefront/nuxt.config.js
2020-03-03 20:45:44 +01:00

139 lines
3.5 KiB
JavaScript

require('dotenv').config()
const axios = require("axios")
export default {
mode: 'universal',
/*
** Headers of the page
*/
head: {
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
/*
** Customize the progress-bar color
*/
loading: { color: '#00d1b2' },
/*
** Global CSS
*/
css: [
'~/assets/bulma.scss'
],
/*
** Plugins to load before mounting the App
*/
plugins: [
{ src: '~/plugins/localStorage.js', ssr: false },
{ src: '~/plugins/moment' }
],
/*
** Nuxt.js dev-modules
*/
buildModules: [
// Doc: https://github.com/nuxt-community/eslint-module
'@nuxtjs/eslint-module'
],
/*
** Nuxt.js modules
*/
modules: [
// Doc: https://axios.nuxtjs.org/usage
'@nuxtjs/axios',
'nuxt-shopify',
'nuxt-buefy'
],
/*
** Axios module configuration
** See https://axios.nuxtjs.org/options
*/
axios: {
baseURL: process.env.API_URL,
headers: {
'X-Shopify-Storefront-Access-Token': process.env.STOREFRONT_ACCESS_TOKEN,
Accept: 'application/json'
}
},
shopify: {
domain: process.env.DOMAIN, // your shopify domain
storefrontAccessToken: process.env.STOREFRONT_ACCESS_TOKEN// your shopify storefront access token
},
generate: {
routes () {
return axios({
url: process.env.API_URL,
method: 'POST',
headers: {
'X-Shopify-Storefront-Access-Token': process.env.STOREFRONT_ACCESS_TOKEN,
Accept: 'application/json'
},
data: {
query: `query {
blogs (first: 250) {
edges {
node {
handle,
articles (first: 250) {
edges {
node {
handle
}
}
}
}
}
},
products (first: 250) {
edges {
node {
handle
}
}
},
collections (first: 250) {
edges {
node {
handle
}
}
}
}`
}
}).then((response) => {
const res = []
const blogRoutes = response.data.data.blogs.edges
const productRoutes = response.data.data.products.edges
const CollectionRoutes = response.data.data.collections.edges
blogRoutes.forEach((blog) => {
res.push('/blog/' + blog.node.handle)
blog.node.articles.edges.forEach((article) => {
res.push('/blog/' + blog.node.handle + '/article/' + article.node.handle)
})
})
productRoutes.forEach((product) => {
res.push('/products/' + product.node.handle)
})
CollectionRoutes.forEach((collection) => {
res.push('/collection/' + collection.node.handle)
})
return res
})
}
},
/*
** Build configuration
*/
build: {
transpile: [],
/*
** You can extend webpack config here
*/
extend (config, ctx) {
}
}
}