Ghost/core/server/config/overrides.json
Aileen Nowak 63642fd8ad YAML settings loader and parser
closes #9528

These code changes introduce a YAML parser which will load and parse YAML files from the `/content/settings` directory. There are three major parts involved:

1. `ensure-settings.js`: this fn takes care that on bootstrap, the supported files are present in the `/content/settings` directory. If the files are not present, they get copied back from our default files. The default files to copy from are located in `core/server/services/settings`.

2. `loader.js`: the settings loader reads the requested `yaml` file from the disk and passes it to the yaml parser, which returns a `json` object of the file. The settings loader throws an error, if the file is not accessible, e. g. because of permission errors.

3. `yaml-parser`: gets passed a `yaml` file and returns a `json` object. If the file is not parseable, it returns a clear error that contains the information, what and where the parsing error occurred (e. g. line number and reason).

- added a `get()` fn to settings services, that returns the settings object that's asked for. e. g. `settings.get('routes').then(()...` will return the `routes` settings.
- added a `getAll()` fn to settings services, that returns all available settings in an object. The object looks like: `{routes: {routes: {}, collections: {}, resources: {}}, globals: {value: {}}`, assuming that we have to supported settings `routes` and `globals`.

Further additions:
- config `contentPath` for `settings`
- config overrides for default `yaml` files location in `/core/server/services/settings`

**Important**: These code changes are in preparation for Dynamic Routing and not yet used. The process of copying the supported `yaml` files (in this first step, the `routes.yaml` file) is not yet activated.
2018-04-15 19:40:22 +02:00

76 lines
2.7 KiB
JSON

{
"paths": {
"appRoot": ".",
"corePath": "core/",
"clientAssets": "core/built/assets",
"helperTemplates": "core/server/helpers/tpl/",
"adminViews": "core/server/web/admin/views/",
"defaultViews": "core/server/views/",
"defaultSettings": "core/server/services/settings/",
"internalAppPath": "core/server/apps/",
"internalStoragePath": "core/server/adapters/storage/",
"internalSchedulingPath": "core/server/adapters/scheduling/",
"migrationPath": "core/server/data/migrations",
"publicFilePath": "core/server/public"
},
"apps": {
"internal": [
"private-blogging",
"subscribers",
"amp"
]
},
"routeKeywords": {
"tag": "tag",
"author": "author",
"page": "page",
"preview": "p",
"private": "private",
"subscribe": "subscribe",
"amp": "amp",
"primaryTagFallback": "all",
"primaryAuthorFallback": "all"
},
"slugs": {
"reserved": ["admin", "app", "apps", "categories",
"category", "dashboard", "feed", "ghost-admin", "login", "logout",
"page", "pages", "post", "posts", "public", "register", "setup",
"signin", "signout", "signup", "user", "users", "wp-admin", "wp-login"],
"protected": ["ghost", "rss", "amp"]
},
"uploads": {
"subscribers": {
"extensions": [".csv"],
"contentTypes": ["text/csv", "application/csv", "application/octet-stream"]
},
"images": {
"extensions": [".jpg", ".jpeg", ".gif", ".png", ".svg", ".svgz"],
"contentTypes": ["image/jpeg", "image/png", "image/gif", "image/svg+xml"]
},
"icons": {
"extensions": [".png", ".ico"],
"contentTypes": ["image/png", "image/x-icon", "image/vnd.microsoft.icon"]
},
"db": {
"extensions": [".json", ".zip"],
"contentTypes": ["text/plain", "application/octet-stream", "application/json", "application/zip", "application/x-zip-compressed"]
},
"themes": {
"extensions": [".zip"],
"contentTypes": ["application/zip", "application/x-zip-compressed", "application/octet-stream"]
},
"redirects": {
"extensions": [".json"],
"contentTypes": ["text/plain", "application/octet-stream", "application/json"]
}
},
"times": {
"cannotScheduleAPostBeforeInMinutes": 2,
"publishAPostBySchedulerToleranceInMinutes": 2,
"getImageSizeTimeoutInMS": 5000
},
"maintenance": {
"enabled": false
}
}