nuxt.config.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import dotenv from 'dotenv/config';
  2. import autoprefixer from 'autoprefixer';
  3. import serveStatic from 'serve-static';
  4. import path from 'path';
  5. export default {
  6. server: {
  7. port: process.env.WEBSITE_PORT
  8. },
  9. env: {
  10. development: process.env.NODE_ENV !== 'production',
  11. version: process.env.npm_package_version,
  12. URL: process.env.DOMAIN,
  13. baseURL: `${process.env.DOMAIN}${process.env.ROUTE_PREFIX}`,
  14. serviceName: process.env.SERVICE_NAME,
  15. maxFileSize: process.env.MAX_SIZE,
  16. chunkSize: process.env.CHUNK_SIZE,
  17. maxLinksPerAlbum: process.env.MAX_LINKS_PER_ALBUM,
  18. publicMode: process.env.PUBLIC_MODE,
  19. userAccounts: process.env.USER_ACCOUNTS
  20. },
  21. srcDir: 'src/site/',
  22. head: {
  23. title: process.env.SERVICE_NAME,
  24. titleTemplate: `%s | ${process.env.SERVICE_NAME}`,
  25. // TODO: Add the directory with pictures for favicon and stuff
  26. meta: [
  27. { charset: 'utf-8' },
  28. { name: 'viewport', content: 'width=device-width, initial-scale=1' },
  29. { hid: 'theme-color', name: 'theme-color', content: `${process.env.META_THEME_COLOR}` },
  30. { hid: 'description', name: 'description', content: `${process.env.META_DESCRIPTION}` },
  31. { hid: 'keywords', name: 'keywords', content: `${process.env.META_KEYWORDS}` },
  32. { hid: 'apple-mobile-web-app-title', name: 'apple-mobile-web-app-title', content: `${process.env.SERVICE_NAME}` },
  33. { hid: 'application-name', name: 'application-name', content: `${process.env.SERVICE_NAME}` },
  34. // { hid: 'msapplication-config', name: 'msapplication-config', content: `${process.env.DOMAIN}/browserconfig.xml` },
  35. { hid: 'twitter:card', name: 'twitter:card', content: 'summary_large_image' },
  36. { hid: 'twitter:site', name: 'twitter:site', content: `${process.env.META_TWITTER_HANDLE}` },
  37. { hid: 'twitter:creator', name: 'twitter:creator', content: `${process.env.META_TWITTER_HANDLE}` },
  38. { hid: 'twitter:title', name: 'twitter:title', content: `${process.env.SERVICE_NAME}` },
  39. { hid: 'twitter:description', name: 'twitter:description', content: `${process.env.META_DESCRIPTION}` },
  40. { hid: 'twitter:image', name: 'twitter:image', content: `${process.env.DOMAIN}/share.jpg` },
  41. { hid: 'og:url', property: 'og:url', content: `${process.env.DOMAIN}` },
  42. { hid: 'og:type', property: 'og:type', content: 'website' },
  43. { hid: 'og:title', property: 'og:title', content: `${process.env.SERVICE_NAME}` },
  44. { hid: 'og:description', property: 'og:description', content: `${process.env.META_DESCRIPTION}` },
  45. { hid: 'og:image', property: 'og:image', content: `${process.env.DOMAIN}/share.jpg` },
  46. { hid: 'og:image:secure_url', property: 'og:image:secure_url', content: `${process.env.DOMAIN}/share.jpg` },
  47. { hid: 'og:site_name', property: 'og:site_name', content: `${process.env.SERVICE_NAME}` }
  48. ],
  49. link: [
  50. { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Nunito:300,400,600,700' },
  51. // This one is a pain in the ass to make it customizable, so you should edit it manually
  52. { type: 'application/json+oembed', href: `${process.env.DOMAIN}/oembed.json` }
  53. ]
  54. },
  55. plugins: [
  56. '~/plugins/axios',
  57. '~/plugins/buefy',
  58. '~/plugins/v-clipboard',
  59. '~/plugins/vue-isyourpasswordsafe',
  60. '~/plugins/vue-timeago',
  61. '~/plugins/flexsearch'
  62. ],
  63. serverMiddleware: [
  64. { path: '/', handler: serveStatic(path.join(__dirname, 'uploads')) }
  65. ],
  66. css: [],
  67. modules: [
  68. '@nuxtjs/axios',
  69. 'cookie-universal-nuxt'
  70. ],
  71. axios: {
  72. baseURL: `${process.env.DOMAIN}${process.env.ROUTE_PREFIX}`
  73. },
  74. build: {
  75. extractCSS: true,
  76. postcss: {
  77. preset: {
  78. autoprefixer
  79. }
  80. }
  81. }
  82. };