// @ts-check const debug = require('debug')('@cypress/react'); /** @type {(configPath: string) => null | import('webpack').Configuration } */ module.exports = function tryLoadWebpackConfig(webpackConfigPath) { debug('trying to load webpack config from %s', webpackConfigPath); // Do this as the first thing so that any code reading it knows the right env. const envName = 'test'; // @ts-expect-error override env is possible process.env.NODE_ENV = envName; process.env.BABEL_ENV = envName; try { let webpackOptions = require(webpackConfigPath); if (webpackOptions.default) { // we probably loaded TS file debug('loaded webpack options has .default - taking that as the config'); webpackOptions = webpackOptions.default; } if (typeof webpackOptions === 'function') { debug('calling webpack function with environment "%s"', envName); webpackOptions = webpackOptions('development'); } debug('webpack options: %o', webpackOptions); return webpackOptions; } catch (err) { debug('could not load react-scripts webpack'); debug('error %s', err.message); debug(err); console.error(err); return null; } };