aboutsummaryrefslogtreecommitdiff
path: root/nuxt.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'nuxt.config.js')
-rw-r--r--nuxt.config.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/nuxt.config.js b/nuxt.config.js
new file mode 100644
index 0000000..b269998
--- /dev/null
+++ b/nuxt.config.js
@@ -0,0 +1,99 @@
+import dotenv from 'dotenv/config';
+import autoprefixer from 'autoprefixer';
+import jetpack from 'fs-jetpack';
+
+const clientConfig = {
+ development: process.env.NODE_ENV !== 'production',
+ version: process.env.npm_package_version,
+ URL: process.env.DOMAIN,
+ baseURL: `${process.env.DOMAIN}${process.env.ROUTE_PREFIX}`,
+ serviceName: process.env.SERVICE_NAME,
+ maxFileSize: parseInt(process.env.MAX_SIZE, 10),
+ chunkSize: parseInt(process.env.CHUNK_SIZE, 10),
+ maxLinksPerAlbum: parseInt(process.env.MAX_LINKS_PER_ALBUM, 10),
+ publicMode: process.env.PUBLIC_MODE === 'true',
+ userAccounts: process.env.USER_ACCOUNTS === 'true'
+};
+
+export default {
+ mode: 'spa',
+ server: {
+ port: process.env.WEBSITE_PORT
+ },
+ srcDir: 'src/site/',
+ head: {
+ title: process.env.SERVICE_NAME,
+ titleTemplate: `%s | ${process.env.SERVICE_NAME}`,
+ // TODO: Add the directory with pictures for favicon and stuff
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' },
+ { hid: 'theme-color', name: 'theme-color', content: `${process.env.META_THEME_COLOR}` },
+ { hid: 'description', name: 'description', content: `${process.env.META_DESCRIPTION}` },
+ { hid: 'keywords', name: 'keywords', content: `${process.env.META_KEYWORDS}` },
+ {
+ hid: 'apple-mobile-web-app-title',
+ name: 'apple-mobile-web-app-title',
+ content: `${process.env.SERVICE_NAME}`
+ },
+ { hid: 'application-name', name: 'application-name', content: `${process.env.SERVICE_NAME}` },
+ // { hid: 'msapplication-config', name: 'msapplication-config', content: `${process.env.DOMAIN}/browserconfig.xml` },
+ { hid: 'twitter:card', name: 'twitter:card', content: 'summary_large_image' },
+ { hid: 'twitter:site', name: 'twitter:site', content: `${process.env.META_TWITTER_HANDLE}` },
+ { hid: 'twitter:creator', name: 'twitter:creator', content: `${process.env.META_TWITTER_HANDLE}` },
+ { hid: 'twitter:title', name: 'twitter:title', content: `${process.env.SERVICE_NAME}` },
+ { hid: 'twitter:description', name: 'twitter:description', content: `${process.env.META_DESCRIPTION}` },
+ { hid: 'twitter:image', name: 'twitter:image', content: `${process.env.DOMAIN}/share.jpg` },
+ { hid: 'og:url', property: 'og:url', content: `${process.env.DOMAIN}` },
+ { hid: 'og:type', property: 'og:type', content: 'website' },
+ { hid: 'og:title', property: 'og:title', content: `${process.env.SERVICE_NAME}` },
+ { hid: 'og:description', property: 'og:description', content: `${process.env.META_DESCRIPTION}` },
+ { hid: 'og:image', property: 'og:image', content: `${process.env.DOMAIN}/share.jpg` },
+ { hid: 'og:image:secure_url', property: 'og:image:secure_url', content: `${process.env.DOMAIN}/share.jpg` },
+ { hid: 'og:site_name', property: 'og:site_name', content: `${process.env.SERVICE_NAME}` }
+ ],
+ link: [
+ { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Nunito:300,400,600,700' },
+
+ // This one is a pain in the ass to make it customizable, so you should edit it manually
+ { type: 'application/json+oembed', href: `${process.env.DOMAIN}/oembed.json` }
+ ]
+ },
+ plugins: [
+ '~/plugins/axios',
+ '~/plugins/buefy',
+ '~/plugins/v-clipboard',
+ '~/plugins/vue-isyourpasswordsafe',
+ '~/plugins/vue-timeago',
+ '~/plugins/vuebar',
+ '~/plugins/nuxt-client-init',
+ '~/plugins/notifier',
+ '~/plugins/handler'
+ ],
+ css: [],
+ modules: ['@nuxtjs/axios', 'cookie-universal-nuxt'],
+ router: {
+ linkActiveClass: 'is-active',
+ linkExactActiveClass: 'is-active'
+ },
+ axios: {
+ baseURL: `${process.env.DOMAIN}${process.env.ROUTE_PREFIX}`
+ },
+ build: {
+ extractCSS: process.env.NODE_ENV === 'production',
+ postcss: {
+ preset: {
+ autoprefixer
+ }
+ },
+ extend(config, { isClient, isDev }) {
+ // Extend only webpack config for client-bundle
+ if (isClient) {
+ jetpack.write('dist/config.json', clientConfig);
+ }
+ if (isDev) {
+ config.devtool = isClient ? 'source-map' : 'inline-source-map';
+ }
+ }
+ }
+};