mirror of
https://github.com/Rushilwiz/spaceout.git
synced 2025-04-22 20:39:50 -04:00
50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const PRODUCTION = 'production';
|
|
const DEVELOPMENT = 'development';
|
|
|
|
/*
|
|
Mode priority:
|
|
- Mode flag
|
|
- Mode from config
|
|
- Mode form NODE_ENV
|
|
*/
|
|
|
|
/**
|
|
*
|
|
* @param {string} mode - mode flag value
|
|
* @param {Object} configObject - contains relevant loaded config
|
|
*/
|
|
const assignMode = (mode, configObject) => {
|
|
const {
|
|
env: { NODE_ENV },
|
|
} = process;
|
|
const { mode: configMode } = configObject;
|
|
let finalMode;
|
|
if (mode) {
|
|
finalMode = mode;
|
|
} else if (configMode) {
|
|
finalMode = configMode;
|
|
} else if (NODE_ENV && (NODE_ENV === PRODUCTION || NODE_ENV === DEVELOPMENT)) {
|
|
finalMode = NODE_ENV;
|
|
} else {
|
|
finalMode = PRODUCTION;
|
|
}
|
|
return { mode: finalMode };
|
|
};
|
|
|
|
/**
|
|
*
|
|
* @param {Object} args - parsedArgs from the CLI
|
|
* @param {Object | Array} configOptions - Contains loaded config or array of configs
|
|
*/
|
|
const resolveMode = (args, configOptions) => {
|
|
const { mode } = args;
|
|
let resolvedMode;
|
|
if (Array.isArray(configOptions)) {
|
|
resolvedMode = configOptions.map((configObject) => assignMode(mode, configObject));
|
|
} else resolvedMode = assignMode(mode, configOptions);
|
|
|
|
return { options: resolvedMode };
|
|
};
|
|
|
|
module.exports = resolveMode;
|