-
Notifications
You must be signed in to change notification settings - Fork 398
/
firebase.json
120 lines (120 loc) · 3.59 KB
/
firebase.json
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
{
"$schema": "https://raw.githubusercontent.com/firebase/firebase-tools/master/schema/firebase-config.json",
"hosting": {
"target": "mat-aio",
"public": "dist/material-angular-io",
"cleanUrls": true,
"rewrites": [
{
"source": "**/!(*.*)",
"destination": "/index.html"
}
],
"headers": [
{
"source": "**/!(*.*)",
"headers": [
{
"key": "Cache-Control",
// The `index.html` file (or when loaded as SPA), should never be cached. Older
// JavaScript sources and assets would be loaded that might no longer be available.
"value": "no-cache"
}
]
},
{
"source": "/**(*.@(css|js|json|html|svg))",
"headers": [
{
"key": "X-Content-Type-Options",
"value": "nosniff"
}
]
},
{
"source": "/**",
"headers": [
{
"key": "X-XSS-Protection",
"value": "1"
},
{
"key": "X-Frame-Options",
"value": "DENY"
},
{
"key": "Content-Security-Policy",
// Keep in sync with `angular.json`.
"value": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://material.angular.io https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;"
}
]
},
{
"source": "/assets/**",
"headers": [
{
"key": "Cache-Control",
// Images and SVGs are not hashed but are also expected to change rarely.
// There are a lot of SVGs in our docs app, and we want to cache them longer.
"value": "public, max-age=8640000" // 100 days.
}
]
},
{
"source": "/assets/versions.json",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
},
{
"key": "Cache-Control",
// The versions file should not be cached as it may change
// at any time and otherwise old versions would be rendered.
"value": "no-cache"
}
]
},
{
"source": "/assets/stack-blitz/**",
"headers": [
{
"key": "Cache-Control",
// StackBlitz assets are not hashed and should not be cached.
"value": "no-cache"
}
]
},
{
"source": "/*.ico",
"headers": [
{
"key": "Cache-Control",
// Icons and the favicon are expected to change rarely. We cache it, but not for too long.
"value": "public, max-age=2592000" // 30 days.
}
]
},
{
"source": "/*.@(js|css)",
"headers": [
{
"key": "Cache-Control",
// JS ans CSS files are hashed and can be cached indefinitely.
"value": "public, max-age=31536000" // 365 days.
}
]
}
],
"ignore": ["firebase.json", "**/node_modules/**", "tmp", "deploy"]
},
"emulators": {
"hosting": {
"port": 4200
},
"ui": {
"enabled": true,
"port": 4202
}
}
}