-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnuxt.config.js
79 lines (77 loc) · 2.42 KB
/
nuxt.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const cookieParser = require("cookie-parser");
const yaml = require("require-yml");
require("dotenv").config();
const serverlessConfig = yaml("./serverless.yml");
const awsRegion = serverlessConfig.provider.region;
const awsS3AssetsBucketName =
serverlessConfig.resources.Resources.AssetsBucket.Properties.BucketName;
module.exports = {
apollo: { clientConfigs: { default: "~/apollo/clientConfigs/default.ts" } },
build: {
extractCSS: true,
publicPath: `https://s3.${awsRegion}.amazonaws.com/${awsS3AssetsBucketName}/`,
extend(config, { isServer }) {
const tsLoader = {
exclude: [/vendor/, /\.nuxt/],
loader: "ts-loader",
options: { appendTsSuffixTo: [/\.vue$/], transpileOnly: true }
};
config.module.rules.push({
test: /((client|server)\.js)|(\.tsx?)$/,
...tsLoader
});
config.resolve.extensions.push(".ts");
config.module.rules.map(rule => {
if (rule.loader === "vue-loader") {
rule.options.loaders = { ts: tsLoader };
}
return rule;
});
if (isServer) {
config.externals = [];
}
}
},
env: {
FIREBASE_CLIENT_API_KEY: process.env.FIREBASE_CLIENT_API_KEY,
FIREBASE_CLIENT_AUTH_DOMAIN: process.env.FIREBASE_CLIENT_AUTH_DOMAIN,
FIREBASE_CLIENT_DATABASE_URL: process.env.FIREBASE_CLIENT_DATABASE_URL,
FIREBASE_CLIENT_MESSAGING_SENDER_ID:
process.env.FIREBASE_CLIENT_MESSAGING_SENDER_ID,
FIREBASE_CLIENT_PROJECT_ID: process.env.FIREBASE_CLIENT_PROJECT_ID,
FIREBASE_CLIENT_STORAGE_BUCKET: process.env.FIREBASE_CLIENT_STORAGE_BUCKET
},
extensions: ["js", "ts"],
head: {
meta: [
{ charset: "utf-8" },
{ name: "viewport", content: "width=device-width, initial-scale=1" },
{
content: "Nuxt-edge Serverless Template",
hid: "description",
name: "description"
}
],
title: "Nuxt Edge Serverless Template"
},
loading: { color: "#51cf66" },
modules: ["@nuxtjs/apollo", "@nuxtjs/bulma", "@nuxtjs/dotenv"],
plugins: [
{ src: "~/plugins/firebase-client-init.ts", ssr: false },
{ src: "~/plugins/auth-cookie.ts", ssr: false }
],
render: {
etag: false,
// Disabled gzip compression
gzip: { threshold: 1073741824 }
},
router: {
middleware: "router-auth"
},
serverMiddleware: [
cookieParser(),
"~/serverMiddleware/validateFirebaseIdToken"
],
srcDir: "src/",
vendor: ["firebase"]
};