Configuratie van de webapplicatie: manifest.json

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 specialeexternalsmap ** pageNotFoundView** --> deview` 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 en cdn-cleanup worden aangepast
  • environments --> voor de specificatie van verschillende omgevingen.
OFFLINE