@anansi/webpack-config
Version:
Production ready webpack for React
79 lines (78 loc) • 10.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
exports.__esModule = true;
exports.generateBabelLoader = generateBabelLoader;
var babel = _interopRequireWildcard(require("@babel/core"));
var _package = require("@babel/core/package.json");
var _package2 = require("babel-loader/package.json");
var _path = _interopRequireDefault(require("path"));
var _semver = _interopRequireDefault(require("semver"));
var _package3 = require("../../package.json");
function generateBabelLoader({
rootPath,
babelRoot,
target,
mode,
babelLoaderOptions,
noHotReload,
library
}) {
const react = require(require.resolve('react', {
paths: [rootPath]
}));
let hasReactRefresh;
try {
require('react-refresh/babel');
hasReactRefresh = true;
} catch (e) {
hasReactRefresh = false;
}
const hasJsxRuntime = react ? !target?.includes?.('node') && _semver.default.gte(react.version, '16.14.0') || _semver.default.gte(react.version, '18.0.0') : false;
const cwd = _path.default.resolve(process.cwd(), babelRoot);
const filename = _path.default.join(cwd, 'noop.js');
// Environment variables that affect babel output (see babel-preset-anansi)
const envVars = [process.env.NODE_ENV, process.env.BROWSERSLIST_ENV, process.env.BABEL_ENV, process.env.BABEL_MODULES, process.env.BABEL_POLYFILL_METHOD, process.env.NO_HOT_RELOAD, process.env.TS_CONFIG_PATH, process.env.RESOLVER_ALIAS, process.env.RESOLVER_ROOT, process.env.ROOT_PATH_ROOT, process.env.ROOT_PATH_SUFFIX, process.env.ROOT_PATH_PREFIX, process.env.POLYFILL_TARGETS
// avoid collisions while being minimal and performant
].join('\0');
const cacheIdentifier = JSON.stringify({
version: _package3.version,
target,
mode,
hasReactRefresh,
noHotReload,
hasJsxRuntime,
babelCoreVersion: _package.version,
babelLoaderVersion: _package2.version,
envVars
}) + JSON.stringify(babel.loadPartialConfig({
filename,
cwd,
sourceFileName: filename
}).options);
const babelLoader = {
loader: require.resolve('babel-loader'),
options: {
cwd,
cacheDirectory: true,
cacheIdentifier,
cacheCompression: mode === 'production',
compact: mode === 'production',
...babelLoaderOptions
}
};
if (react) {
babelLoader.options.caller = {
hasJsxRuntime,
...babelLoader.options.caller
};
if (noHotReload) {
babelLoader.options.caller.noHotReload = true;
}
}
if (library) {
babelLoader.options.caller.library = true;
}
return babelLoader;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYWJlbCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9wYWNrYWdlIiwiX3BhY2thZ2UyIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3NlbXZlciIsIl9wYWNrYWdlMyIsImdlbmVyYXRlQmFiZWxMb2FkZXIiLCJyb290UGF0aCIsImJhYmVsUm9vdCIsInRhcmdldCIsIm1vZGUiLCJiYWJlbExvYWRlck9wdGlvbnMiLCJub0hvdFJlbG9hZCIsImxpYnJhcnkiLCJyZWFjdCIsInJlc29sdmUiLCJwYXRocyIsImhhc1JlYWN0UmVmcmVzaCIsImUiLCJoYXNKc3hSdW50aW1lIiwiaW5jbHVkZXMiLCJzZW12ZXIiLCJndGUiLCJ2ZXJzaW9uIiwiY3dkIiwicGF0aCIsInByb2Nlc3MiLCJmaWxlbmFtZSIsImpvaW4iLCJlbnZWYXJzIiwiZW52IiwiTk9ERV9FTlYiLCJCUk9XU0VSU0xJU1RfRU5WIiwiQkFCRUxfRU5WIiwiQkFCRUxfTU9EVUxFUyIsIkJBQkVMX1BPTFlGSUxMX01FVEhPRCIsIk5PX0hPVF9SRUxPQUQiLCJUU19DT05GSUdfUEFUSCIsIlJFU09MVkVSX0FMSUFTIiwiUkVTT0xWRVJfUk9PVCIsIlJPT1RfUEFUSF9ST09UIiwiUk9PVF9QQVRIX1NVRkZJWCIsIlJPT1RfUEFUSF9QUkVGSVgiLCJQT0xZRklMTF9UQVJHRVRTIiwiY2FjaGVJZGVudGlmaWVyIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhYmVsQ29yZVZlcnNpb24iLCJiYWJlbExvYWRlclZlcnNpb24iLCJsb2FkUGFydGlhbENvbmZpZyIsInNvdXJjZUZpbGVOYW1lIiwib3B0aW9ucyIsImJhYmVsTG9hZGVyIiwibG9hZGVyIiwiY2FjaGVEaXJlY3RvcnkiLCJjYWNoZUNvbXByZXNzaW9uIiwiY29tcGFjdCIsImNhbGxlciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2dlbmVyYXRlQmFiZWxMb2FkZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYmFiZWwgZnJvbSAnQGJhYmVsL2NvcmUnO1xuaW1wb3J0IHsgdmVyc2lvbiBhcyBiYWJlbENvcmVWZXJzaW9uIH0gZnJvbSAnQGJhYmVsL2NvcmUvcGFja2FnZS5qc29uJztcbmltcG9ydCB7IHZlcnNpb24gYXMgYmFiZWxMb2FkZXJWZXJzaW9uIH0gZnJvbSAnYmFiZWwtbG9hZGVyL3BhY2thZ2UuanNvbic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUJhYmVsTG9hZGVyKHtcbiAgcm9vdFBhdGgsXG4gIGJhYmVsUm9vdCxcbiAgdGFyZ2V0LFxuICBtb2RlLFxuICBiYWJlbExvYWRlck9wdGlvbnMsXG4gIG5vSG90UmVsb2FkLFxuICBsaWJyYXJ5LFxufSkge1xuICBjb25zdCByZWFjdCA9IHJlcXVpcmUoXG4gICAgcmVxdWlyZS5yZXNvbHZlKCdyZWFjdCcsIHtcbiAgICAgIHBhdGhzOiBbcm9vdFBhdGhdLFxuICAgIH0pLFxuICApO1xuICBsZXQgaGFzUmVhY3RSZWZyZXNoO1xuICB0cnkge1xuICAgIHJlcXVpcmUoJ3JlYWN0LXJlZnJlc2gvYmFiZWwnKTtcbiAgICBoYXNSZWFjdFJlZnJlc2ggPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaGFzUmVhY3RSZWZyZXNoID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaGFzSnN4UnVudGltZSA9XG4gICAgcmVhY3QgP1xuICAgICAgKCF0YXJnZXQ/LmluY2x1ZGVzPy4oJ25vZGUnKSAmJiBzZW12ZXIuZ3RlKHJlYWN0LnZlcnNpb24sICcxNi4xNC4wJykpIHx8XG4gICAgICBzZW12ZXIuZ3RlKHJlYWN0LnZlcnNpb24sICcxOC4wLjAnKVxuICAgIDogZmFsc2U7XG4gIGNvbnN0IGN3ZCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBiYWJlbFJvb3QpO1xuICBjb25zdCBmaWxlbmFtZSA9IHBhdGguam9pbihjd2QsICdub29wLmpzJyk7XG4gIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFmZmVjdCBiYWJlbCBvdXRwdXQgKHNlZSBiYWJlbC1wcmVzZXQtYW5hbnNpKVxuICBjb25zdCBlbnZWYXJzID0gW1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WLFxuICAgIHByb2Nlc3MuZW52LkJST1dTRVJTTElTVF9FTlYsXG4gICAgcHJvY2Vzcy5lbnYuQkFCRUxfRU5WLFxuICAgIHByb2Nlc3MuZW52LkJBQkVMX01PRFVMRVMsXG4gICAgcHJvY2Vzcy5lbnYuQkFCRUxfUE9MWUZJTExfTUVUSE9ELFxuICAgIHByb2Nlc3MuZW52Lk5PX0hPVF9SRUxPQUQsXG4gICAgcHJvY2Vzcy5lbnYuVFNfQ09ORklHX1BBVEgsXG4gICAgcHJvY2Vzcy5lbnYuUkVTT0xWRVJfQUxJQVMsXG4gICAgcHJvY2Vzcy5lbnYuUkVTT0xWRVJfUk9PVCxcbiAgICBwcm9jZXNzLmVudi5ST09UX1BBVEhfUk9PVCxcbiAgICBwcm9jZXNzLmVudi5ST09UX1BBVEhfU1VGRklYLFxuICAgIHByb2Nlc3MuZW52LlJPT1RfUEFUSF9QUkVGSVgsXG4gICAgcHJvY2Vzcy5lbnYuUE9MWUZJTExfVEFSR0VUUyxcbiAgICAvLyBhdm9pZCBjb2xsaXNpb25zIHdoaWxlIGJlaW5nIG1pbmltYWwgYW5kIHBlcmZvcm1hbnRcbiAgXS5qb2luKCdcXDAnKTtcblxuICBjb25zdCBjYWNoZUlkZW50aWZpZXIgPVxuICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHZlcnNpb24sXG4gICAgICB0YXJnZXQsXG4gICAgICBtb2RlLFxuICAgICAgaGFzUmVhY3RSZWZyZXNoLFxuICAgICAgbm9Ib3RSZWxvYWQsXG4gICAgICBoYXNKc3hSdW50aW1lLFxuICAgICAgYmFiZWxDb3JlVmVyc2lvbixcbiAgICAgIGJhYmVsTG9hZGVyVmVyc2lvbixcbiAgICAgIGVudlZhcnMsXG4gICAgfSkgK1xuICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgYmFiZWwubG9hZFBhcnRpYWxDb25maWcoe1xuICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgY3dkLFxuICAgICAgICBzb3VyY2VGaWxlTmFtZTogZmlsZW5hbWUsXG4gICAgICB9KS5vcHRpb25zLFxuICAgICk7XG4gIGNvbnN0IGJhYmVsTG9hZGVyID0ge1xuICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKCdiYWJlbC1sb2FkZXInKSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBjd2QsXG4gICAgICBjYWNoZURpcmVjdG9yeTogdHJ1ZSxcbiAgICAgIGNhY2hlSWRlbnRpZmllcixcbiAgICAgIGNhY2hlQ29tcHJlc3Npb246IG1vZGUgPT09ICdwcm9kdWN0aW9uJyxcbiAgICAgIGNvbXBhY3Q6IG1vZGUgPT09ICdwcm9kdWN0aW9uJyxcbiAgICAgIC4uLmJhYmVsTG9hZGVyT3B0aW9ucyxcbiAgICB9LFxuICB9O1xuICBpZiAocmVhY3QpIHtcbiAgICBiYWJlbExvYWRlci5vcHRpb25zLmNhbGxlciA9IHtcbiAgICAgIGhhc0pzeFJ1bnRpbWUsXG4gICAgICAuLi5iYWJlbExvYWRlci5vcHRpb25zLmNhbGxlcixcbiAgICB9O1xuICAgIGlmIChub0hvdFJlbG9hZCkge1xuICAgICAgYmFiZWxMb2FkZXIub3B0aW9ucy5jYWxsZXIubm9Ib3RSZWxvYWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAobGlicmFyeSkge1xuICAgIGJhYmVsTG9hZGVyLm9wdGlvbnMuY2FsbGVyLmxpYnJhcnkgPSB0cnVlO1xuICB9XG4gIHJldHVybiBiYWJlbExvYWRlcjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBQyxzQkFBQSxDQUFB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