Skip to content

Commit 4b9b0ea

Browse files
Ensure app config variables have values at build-time (#1296)
* dynamic config value evaluation at build time * finalize dynamic and build time config value processing * rework for build-time config resolution logic, with fallback * revert JssConfig type to how it was * small tweaks, addressing comments
1 parent 38bdfb7 commit 4b9b0ea

File tree

6 files changed

+34
-14
lines changed

6 files changed

+34
-14
lines changed

packages/create-sitecore-jss/src/templates/nextjs-multisite/scripts/config/plugins/multisite.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ class MultisitePlugin implements ConfigPlugin {
1313

1414
async exec(config: JssConfig) {
1515
let sites: SiteInfo[] = [];
16-
const endpoint = process.env.GRAPH_QL_ENDPOINT || config.graphQLEndpoint;
17-
const apiKey = process.env.SITECORE_API_KEY || config.sitecoreApiKey;
16+
17+
const endpoint = config.graphQLEndpoint;
18+
const apiKey = config.sitecoreApiKey;
1819

1920
if (!endpoint || !apiKey) {
2021
console.warn(
21-
chalk.yellow('Skipping site information fetch (missing GraphQL connection details)')
22+
chalk.yellow('Skipping site information fetch (missing GraphQL endpoint or API key).')
2223
);
2324
} else {
2425
console.log(`Fetching site information from ${endpoint}`);

packages/create-sitecore-jss/src/templates/nextjs/scripts/config/plugins/computed.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class ComputedPlugin implements ConfigPlugin {
1010

1111
async exec(config: JssConfig) {
1212
return Object.assign({}, config, {
13-
graphQLEndpoint: `${config.sitecoreApiHost}${config.graphQLEndpointPath}`,
13+
graphQLEndpoint: config.graphQLEndpoint || `${config.sitecoreApiHost}${config.graphQLEndpointPath}`,
1414
});
1515
}
1616
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { ConfigPlugin, JssConfig } from '..';
2+
3+
/**
4+
* This config will set fallback values for properties that were left empty
5+
* If neither env, nor other places had a proper value, this will ensure a fallback is set
6+
*/
7+
class FallbackPlugin implements ConfigPlugin {
8+
// should always comes last
9+
order = 99;
10+
11+
async exec(config: JssConfig) {
12+
return Object.assign({}, config, {
13+
defaultLanguage: config.defaultLanguage || 'en',
14+
sitecoreApiKey: config.sitecoreApiKey || 'no-api-key-set'
15+
});
16+
}
17+
}
18+
19+
export const fallbackPlugin = new FallbackPlugin();

packages/create-sitecore-jss/src/templates/nextjs/scripts/config/plugins/package-json.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ class PackageJsonPlugin implements ConfigPlugin {
1111
if (!packageConfig.config) return config;
1212

1313
return Object.assign({}, config, {
14-
jssAppName: packageConfig.config.appName,
15-
graphQLEndpointPath: packageConfig.config.graphQLEndpointPath,
16-
defaultLanguage: packageConfig.config.language,
14+
jssAppName: config.jssAppName || packageConfig.config.appName,
15+
graphQLEndpointPath: config.graphQLEndpointPath || packageConfig.config.graphQLEndpointPath,
16+
defaultLanguage: config.defaultLanguage || packageConfig.config.language,
1717
});
1818
}
1919
}

packages/create-sitecore-jss/src/templates/nextjs/scripts/config/plugins/scjssconfig.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class ScJssConfigPlugin implements ConfigPlugin {
1919
if (!scJssConfig) return config;
2020

2121
return Object.assign({}, config, {
22-
sitecoreApiKey: scJssConfig.sitecore?.apiKey,
23-
sitecoreApiHost: scJssConfig.sitecore?.layoutServiceHost,
22+
sitecoreApiKey: config.sitecoreApiKey || scJssConfig.sitecore?.apiKey,
23+
sitecoreApiHost: config.sitecoreApiHost || scJssConfig.sitecore?.layoutServiceHost,
2424
});
2525
}
2626
}

packages/create-sitecore-jss/src/templates/nextjs/scripts/generate-config.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import { JssConfig, jssConfigFactory } from './config';
1010
*/
1111

1212
const defaultConfig: JssConfig = {
13-
sitecoreApiKey: 'no-api-key-set',
14-
sitecoreApiHost: '',
15-
jssAppName: 'Unknown',
16-
graphQLEndpointPath: '',
17-
defaultLanguage: 'en',
13+
sitecoreApiKey: process.env[`${constantCase('sitecoreApiKey')}`],
14+
sitecoreApiHost: process.env[`${constantCase('sitecoreApiHost')}`],
15+
jssAppName: process.env[`${constantCase('jssAppName')}`],
16+
graphQLEndpointPath: process.env[`${constantCase('graphQLEndpointPath')}`],
17+
defaultLanguage: process.env[`${constantCase('defaultLanguage')}`],
1818
};
1919

2020
generateConfig(defaultConfig);

0 commit comments

Comments
 (0)