beam-cli
Version:
A beautifully simple CLI for running Lighthouse audits on a statically generated (SSG) website
41 lines (40 loc) • 1.43 kB
JavaScript
import { defaultOptions } from '../options/defaults.js';
/** Build up the configuration options
*
* Order of Preference (lowest -> highest):
* Defaults -> Config File -> Flags
*/
export const mergeConfigurations = (flags, userConfiguration) => {
let { lighthouse } = defaultOptions;
if (userConfiguration.lighthouse) {
if (Array.isArray(userConfiguration.lighthouse)) {
/* eslint-disable @typescript-eslint/consistent-type-assertions */
// ? Disabling the eslint rule for a cleaner and small section of code.
lighthouse = userConfiguration.lighthouse.map(lhc => ({
...defaultOptions.lighthouse,
...lhc,
}));
/* eslint-enable @typescript-eslint/consistent-type-assertions */
}
else {
lighthouse = {
...defaultOptions.lighthouse,
...userConfiguration.lighthouse,
};
}
}
const options = {
...defaultOptions,
...userConfiguration,
server: { ...defaultOptions.server, ...userConfiguration.server },
output: { ...defaultOptions.output, ...userConfiguration.output },
lighthouse,
};
if (flags.dist)
options.dist = flags.dist;
if (flags.port)
options.server.port = flags.port;
if (flags.urls)
options.urls = flags.urls.split(',');
return options;
};