manifest.json
src/manifest.json is het applicatie configuratie-bestand, in de src map. Het heeft de volgende structuur:
{
"port": 3001,
"socketServer": {
"enabled": true,
"port": 4001,
"proxy-port": 4002
},
"debug": false,
"gracefullyShutDown": 10,
"pageNotFoundView": "not-found",
"showOffline": false,
"showEnvironment": false,
"ddos-prevention": {
"enabled": true,
"maxItemsOnPage": 150,
"testmode": false,
"silent": true,
"silentStart": true
},
"metatags": [
{
"name": "keywords",
"content": "webpage"
}
],
"links": [
],
"app-authentication": {
"enabled": false,
"onlySsl": true,
"session-cookie": false,
"ttl-sec": 1800,
"loginView": "login",
"strategies": [
{
"strategy": "general",
"loginView": "login"
},
{
"strategy": "general2",
"validateFunc": "src/authentication/validate"
}
]
},
"cookies": {
"body-data-attr": {
"enabled": true,
"onlySsl": false,
"ttl-sec": 31536000
},
"not-exposed": {
"enabled": true,
"onlySsl": false,
"ttl-sec": 31536000
},
"props": {
"enabled": true,
"onlySsl": false,
"ttl-sec": 31536000
}
},
"client-props": {
},
"url-loader-limit": "1",
"external-modules": [
{
"module": "react",
"ref": "React",
"file": "react/dist/react.min.js"
},
{
"module": "react-dom",
"ref": "ReactDOM",
"file": "react-dom/dist/react-dom.min.js"
},
{
"module": "react-dom/server",
"ref": "ReactDOMServer",
"file": "react-dom/dist/react-dom-server.min.js"
}
],
"static-components-dir": [
],
"cdn": {
"enabled": false,
"cleanupPrevious": false,
"url": "",
"apiVersion": "",
"accessKeyId": "",
"secretAccessKey": "",
"bucket": ""
},
"babel-polyfill": true,
"service-workers": {
"enabled": true,
"cacheAuthenticatedCode": true
},
"inline-pagecss": true,
"page-description": "my awesome page",
"google-analytics": "",
"meta-viewport": {
"desktop": "width=device-width, initial-scale=1.0",
"phone": "user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0, minimal-ui",
"tablet": "user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0, minimal-ui"
},
"languages": {
"en": "default"
},
"databases": {
"db1": {
"host": "xxx.xxx.xxx.xxx",
"port": "3306",
"database": "db1",
"user": "my_username",
"password": "my_password"
}
},
"environments": {
"local": {
"device": "",
"socketServer": {
"port": 4001,
"proxy-port": 4001
},
"service-workers": {
"enabled": false
},
"app-authentication": {
"onlySsl": false
},
"cookies": {
"body-data-attr": {
"onlySsl": false
},
"not-exposed": {
"onlySsl": false
},
"props": {
"onlySsl": false
}
},
"external-modules": [
{
"module": "react",
"ref": "React",
"file": "react/dist/react.js"
},
{
"module": "react-dom",
"ref": "ReactDOM",
"file": "react-dom/dist/react-dom.js"
},
{
"module": "react-dom/server",
"ref": "ReactDOMServer",
"file": "react-dom/dist/react-dom-server.js"
}
]
},
"test": {
"socketServer": {
"port": 4001,
"proxy-port": 4001
},
"service-workers": {
"enabled": false
},
"app-authentication": {
"onlySsl": false
},
"cookies": {
"body-data-attr": {
"onlySsl": false
},
"not-exposed": {
"onlySsl": false
},
"props": {
"onlySsl": false
}
}
},
"development": {
"debug": true,
"service-workers": {
"enabled": true
},
"external-modules": [
{
"module": "react",
"ref": "React",
"file": "react/dist/react.js"
},
{
"module": "react-dom",
"ref": "ReactDOM",
"file": "react-dom/dist/react-dom.js"
},
{
"module": "react-dom/server",
"ref": "ReactDOMServer",
"file": "react-dom/dist/react-dom-server.js"
}
]
}
}
}
Uitleg properties
- port --> de poort waarop de webapp zal starten
- url-loader-limit --> limiet waarbij required url-images worden aangemaakt als inline-images (om het aantal requests te beperken). Zie webpack/url-loader. Indien 0, dan worden alle images inline aangemaakt.
- debug --> ofdebugging aan or uit is (console berichten)
- inlinecss --> of de css inline wordt aangemaakt (aanbevolen), of d.m.v. een extern bestand
- page-description --> de beschrijving in de html-head
- google-analytics --> indien gedefinieerd, dan wordt dit id gebruikt voor het updaten van google-analytics
- cookies[‘body-data-attr’] --> cookies die verschijnen als
body[data-cookiename="cookievalue"]
, wat erg handig is voor serverside rendering client specifiike properties zoals like zoom-faktor - cookies[‘not-exposed’] --> cookies die de server kan lezen, maar welke geen onderdeel uitmaken van
this.props
- cookies.props --> cookies die als onderdeel van this.props verschijnen:
this.props.__appProps.cookies
- languages --> the talen die de applicatie gebruikt. Alleen talen die zijn ingesteld op true worden geactiveerd en **er moet altijd één default language zijn gespecificeerd
- client-props --> de eigenschappen die hier zijn gedefinieerd, zullen voor de client beschikbaar zijn via
this.props.__appProps.clientConfig
- databases --> wordt gebruikt om toegang tot de database te specificeren. Dit is enkel informatie zonder directe functionaliteit door itsa-server. Echter, wanneer database-modules worden geintegreerd, dan moeten deze deze data gebruiken als entry.
- external-modules --> modules die als aparte download verschijnen in de header (link or script). Er mage worden verwezen naar iedere module in van node_modules
, of je kunt zelf een module aanmaken in de speciale
externalsmap ** pageNotFoundView** --> de
view` die moet worden weergegeven wanneer een bezoeker een niet bestaande pagina opvraagt - service-workers --> volledig automatisch ingesteld service workers
- ddos-prevention --> om overload via ddos te voorkomen. Zorg er voor dat
maxItemsOnPage
niet te laag staat: anders worden reguliere bezoekers geblokt - cdn --> settings voor CDN, geoptimaliseerd voor AWS-S3. Bij een andere CDN, moeten de root-bestanden
cdn-deploy
encdn-cleanup
worden aangepast - environments --> voor de specificatie van verschillende omgevingen.