gatsby
Version:
Blazing fast modern site generator for React
86 lines (80 loc) • 2.84 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.loadConfig = loadConfig;
var _reporter = _interopRequireDefault(require("gatsby-cli/lib/reporter"));
var _gatsbyTelemetry = _interopRequireDefault(require("gatsby-telemetry"));
var _preferDefault = require("../prefer-default");
var _getConfigFile = require("../get-config-file");
var _actions = require("../../redux/actions");
var _loadThemes = require("../load-themes");
var _redux = require("../../redux");
var _handleFlags = _interopRequireDefault(require("../../utils/handle-flags"));
var _flags = _interopRequireDefault(require("../../utils/flags"));
async function loadConfig({
siteDirectory,
processFlags = false
}) {
// Try opening the site's gatsby-config.js file.
const {
configModule,
configFilePath
} = await (0, _getConfigFile.getConfigFile)(siteDirectory, `gatsby-config`);
let config = (0, _preferDefault.preferDefault)(configModule);
// The root config cannot be exported as a function, only theme configs
if (typeof config === `function`) {
_reporter.default.panic({
id: `10126`,
context: {
configName: `gatsby-config`,
siteDirectory
}
});
}
if (processFlags) {
var _config$flags, _config, _config2;
// Setup flags
const {
enabledConfigFlags,
unknownFlagMessage,
unfitFlagMessage,
message
} = (0, _handleFlags.default)(_flags.default, (_config$flags = (_config = config) === null || _config === void 0 ? void 0 : _config.flags) !== null && _config$flags !== void 0 ? _config$flags : {});
if (unknownFlagMessage !== ``) {
_reporter.default.warn(unknownFlagMessage);
}
if (unfitFlagMessage !== ``) {
_reporter.default.warn(unfitFlagMessage);
}
// set process.env for each flag
enabledConfigFlags.forEach(flag => {
process.env[flag.env] = `true`;
});
// Print out message.
if (message !== ``) {
_reporter.default.info(message);
}
process.env.GATSBY_SLICES = `true`;
// track usage of feature
enabledConfigFlags.forEach(flag => {
if (flag.telemetryId) {
_gatsbyTelemetry.default.trackFeatureIsUsed(flag.telemetryId);
}
});
// Track the usage of config.flags
if ((_config2 = config) !== null && _config2 !== void 0 && _config2.flags) {
_gatsbyTelemetry.default.trackFeatureIsUsed(`ConfigFlags`);
}
}
// theme gatsby configs can be functions or objects
if (config) {
const plugins = await (0, _loadThemes.loadThemes)(config, {
configFilePath,
rootDir: siteDirectory
});
config = plugins.config;
}
_redux.store.dispatch(_actions.internalActions.setSiteConfig(config));
return config;
}
//# sourceMappingURL=index.js.map
;