Project Configuration
The project configuration file is located in /.helix/config.xlsx
(for sharepoint) or /.helix/config
(for google drive). It consists of a table using Key
and value
columns. For example:
The format of the keys follows the identifier-dot notation, like in javascript. You can think of the sheets as a flattened JSON structure. If a key appears more than once, it would form an array, eg:
Will conceptually be a structure like:
{
"access": {
"allow": [
"*@adobe.com",
"*@example.com",
]
}
}
The following table lists the configuration options of a project.
Key | Comment | Example |
name |
Name of the project used by the slack bot when reporting. | Franklin Website |
slack |
slack channel for this project | T03DFTYDQ/C12U1A8480Q |
host |
host displayed in slack-bot info | www.example.com |
timezone |
timezone used by slack-bot | Europe/Zurich |
cdn.prod.host |
CDN host name for production environment | www.example.com |
cdn.prod.type |
CDN type | fastly |
cdn.prod.route |
Route or routes on the CDN that are rendered with Franklin | /site |
cdn.prod.serviceId |
Fastly specific: service ID | 1234 |
cdn.prod.authToken |
Fastly specific: API Token | |
cdn.prod.endpoint |
Akamai specific: Endpoint | |
cdn.prod.clientSecret |
Akamai specific: Client secret | |
cdn.prod.clientToken |
Akamai specific: Client token | |
cdn.prod.accessToken |
Akamai specific:Access token | |
cdn.prod.origin |
Cloudflare specific: origin | |
cdn.prod.plan |
Cloudflare specific: plan | |
cdn.prod.zoneId |
Cloudflare specific: zone id | |
cdn.prod.apiToken |
Cloudflare specific: api token | |
cdn.preview.host |
Custom CDN host name for preview environment | preview.example.com |
cdn.live.host |
Custom CDN host name for live environment | live.example.com |
access.allow |
The email glob of the users that are allowed. This will enable site authentication if set. | *@adobe.com |
access.require.repository |
The list of owner/repo pointers to projects that are allowed to use this content. | adobe/helix-website |
admin.role.author |
The email glob of the users with the author role. | *@adobe.com |
admin.role.publish |
The email glob of the users with the publish role. | *@adobe.com |
blueprint |
configuration blueprint repository in the owner/repo format. Can be multiple. | adobe/franklin-defaults |
admin.events.github.target |
The target Github repository to send notifications. | hlxsites/target-gh-repo |
Also see the JSON Schema and Typescript Types of this config.
Blueprints
A project can define configuration blueprints that serve as defaults for the config.
The blueprints are defined in the .helix
directory of the github repository. eg:
adobe/franklin-defaults
├── README.md
├── .helix/
│ ├── blueprint-targets.json
│ └── blueprint-config.json
└── fstab.yaml
- The
.helix/blueprint-config.json
contains the blueprint configuration - The
.helix/blueprint-targets.json
contains the list of allowed projects that can use the blueprint
The blueprint-targets.json
needs to be a JSON array with the owner/repo names, eg:
[
"adobe/franklin-project1",
"adobe/franklin-project2"
]
Each project wanting to use the blueprint will need to register the blueprint configuration repository using the blueprint
property in .helix/config.json
(see configuration options above) and be listed in the .helix/blueprint-targets.json
in the blueprint configuration repository.
This two-way referencing is needed to ensure that no project can steal the configuration of another one,
And that no blueprint repository can force their config on an unrelated project.
Note: The blueprints configuration are only applied when the respective configuration files (/.helix/config,
/.helix/headers
, /metadata
) are previewed, but not when the blueprint config is pushed.
The blueprints contain the defaults for the project config (as described above). They can also provide defaults for the headers and metadata configuration and have the following structure:
{
"config": {
"data": {
....project config
}
},
"metadata": {
"data": {
....metadata config
}
},
"headers": {
"data": {
....headers config
}
}
}
The metadata and the headers config follow the Modifiers format, which are an array of key/value pairs within path glob objects. Eg:
"metadata": {
"data": {
"/news/**": [
{"key": "category", "value": "news"},
{"key": "locale", "value": "en-US"}
],
"/blog/**": [
{"key": "category", "value": "blog"}
],
"/**": [
{"key": "title", "value": "ACME CORP"},
{"key": "description", "value": "Lorem ipsum dolor…"},
{"key": "locale", "value": "en-US"}
]
},
},
}
Previous