aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/instant/webpack.config.js')
-rw-r--r--packages/instant/webpack.config.js53
1 files changed, 15 insertions, 38 deletions
diff --git a/packages/instant/webpack.config.js b/packages/instant/webpack.config.js
index 284276c1a..020fab506 100644
--- a/packages/instant/webpack.config.js
+++ b/packages/instant/webpack.config.js
@@ -6,60 +6,37 @@ const webpack = require('webpack');
// The common js bundle (not this one) is built using tsc.
// The umd bundle (this one) has a different entrypoint.
-const ACCEPTABLE_ENV_NAMES = ['production_standalone', 'production_cdn', 'staging', 'dogfood', 'development'];
-const getEnvironmentName = env => {
- if (!env) {
- throw new Error('Please specify env via --env to webpack');
- }
- const foundName = ACCEPTABLE_ENV_NAMES.find(e => (env[e] ? e : false));
- if (!foundName) {
- throw new Error(
- `Couldn't find env name, please specify via one of the following CLI arguments: ${acceptableEnvNames.map(
- i => `--env.${i}`,
- )}`,
- );
- }
- return foundName;
-};
-
-const getConfigForEnv = environmentName => {
- switch (environmentName) {
- case 'production_standalone':
- case 'production_cdn':
- return {
- heapAnalyticsIdEnvName: 'INSTANT_HEAP_ANALYTICS_ID_PRODUCTION',
- heapAnalyticsIdRequired: environmentName !== 'production_standalone',
- };
- case 'staging':
- case 'dogfood':
- case 'development':
- return {
- heapAnalyticsIdEnvName: 'INSTANT_HEAP_ANALYTICS_ID_DEVELOPMENT',
- heapAnalyticsIdRequired: environmentName !== 'development',
- };
- }
+const CDNS_THAT_REQUIRE_HEAP = ['production', 'staging', 'dogfood'];
+const getConfigForCdn = cdnName => {
+ return {
+ heapAnalyticsIdEnvName:
+ cdnName === 'production' ? 'INSTANT_HEAP_ANALYTICS_ID_PRODUCTION' : 'INSTANT_HEAP_ANALYTICS_ID_DEVELOPMENT',
+ heapAnalyticsIdRequired: CDNS_THAT_REQUIRE_HEAP.includes(cdnName),
+ };
};
const GIT_SHA = childProcess
.execSync('git rev-parse HEAD')
.toString()
.trim();
-const generateConfig = (environmentName, configOptions) => {
+const generateConfig = (cdnName, configOptions) => {
const outputPath = process.env.WEBPACK_OUTPUT_PATH || 'umd';
const { heapAnalyticsIdEnvName, heapAnalyticsIdRequired } = configOptions;
const heapAnalyticsId = process.env[heapAnalyticsIdEnvName];
if (heapAnalyticsIdRequired && !heapAnalyticsId) {
throw new Error(
- `Must define heap analytics id in ENV var ${heapAnalyticsIdEnvName} when building for ${environmentName}`,
+ `Must define heap analytics id in ENV var ${heapAnalyticsIdEnvName} when building for ${cdnName}`,
);
}
const envVars = {
GIT_SHA: JSON.stringify(GIT_SHA),
- INSTANT_ENVIRONMENT: JSON.stringify(environmentName),
NPM_PACKAGE_VERSION: JSON.stringify(process.env.npm_package_version),
};
+ if (cdnName) {
+ envVars.INSTANT_CDN = JSON.stringify(cdnName);
+ }
if (heapAnalyticsId) {
envVars.HEAP_ANALYTICS_ID = JSON.stringify(heapAnalyticsId);
}
@@ -114,7 +91,7 @@ const generateConfig = (environmentName, configOptions) => {
};
module.exports = (env, _argv) => {
- const environmentName = getEnvironmentName(env);
- const configOptions = getConfigForEnv(environmentName);
- return generateConfig(environmentName, configOptions);
+ const cdnName = env ? env.cdn : undefined;
+ const configOptions = getConfigForCdn(cdnName);
+ return generateConfig(cdnName, configOptions);
};