@anansi/webpack-config
Version:
Production ready webpack for React
80 lines (79 loc) • 10.7 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.generateBabelLoader = generateBabelLoader;
var _stringify = _interopRequireDefault(require("core-js-pure/stable/json/stringify.js"));
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 = (0, _stringify.default)({
version: _package3.version,
target,
mode,
hasReactRefresh,
noHotReload,
hasJsxRuntime,
babelCoreVersion: _package.version,
babelLoaderVersion: _package2.version,
envVars
}) + (0, _stringify.default)(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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYWJlbCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9wYWNrYWdlIiwiX3BhY2thZ2UyIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3NlbXZlciIsIl9wYWNrYWdlMyIsImdlbmVyYXRlQmFiZWxMb2FkZXIiLCJyb290UGF0aCIsImJhYmVsUm9vdCIsInRhcmdldCIsIm1vZGUiLCJiYWJlbExvYWRlck9wdGlvbnMiLCJub0hvdFJlbG9hZCIsImxpYnJhcnkiLCJyZWFjdCIsInJlc29sdmUiLCJwYXRocyIsImhhc1JlYWN0UmVmcmVzaCIsImUiLCJoYXNKc3hSdW50aW1lIiwiaW5jbHVkZXMiLCJzZW12ZXIiLCJndGUiLCJ2ZXJzaW9uIiwiY3dkIiwicGF0aCIsInByb2Nlc3MiLCJmaWxlbmFtZSIsImpvaW4iLCJlbnZWYXJzIiwiZW52IiwiTk9ERV9FTlYiLCJCUk9XU0VSU0xJU1RfRU5WIiwiQkFCRUxfRU5WIiwiQkFCRUxfTU9EVUxFUyIsIkJBQkVMX1BPTFlGSUxMX01FVEhPRCIsIk5PX0hPVF9SRUxPQUQiLCJUU19DT05GSUdfUEFUSCIsIlJFU09MVkVSX0FMSUFTIiwiUkVTT0xWRVJfUk9PVCIsIlJPT1RfUEFUSF9ST09UIiwiUk9PVF9QQVRIX1NVRkZJWCIsIlJPT1RfUEFUSF9QUkVGSVgiLCJQT0xZRklMTF9UQVJHRVRTIiwiY2FjaGVJZGVudGlmaWVyIiwiX3N0cmluZ2lmeSIsImRlZmF1bHQiLCJiYWJlbENvcmVWZXJzaW9uIiwiYmFiZWxMb2FkZXJWZXJzaW9uIiwibG9hZFBhcnRpYWxDb25maWciLCJzb3VyY2VGaWxlTmFtZSIsIm9wdGlvbnMiLCJiYWJlbExvYWRlciIsImxvYWRlciIsImNhY2hlRGlyZWN0b3J5IiwiY2FjaGVDb21wcmVzc2lvbiIsImNvbXBhY3QiLCJjYWxsZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzZS9nZW5lcmF0ZUJhYmVsTG9hZGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJhYmVsIGZyb20gJ0BiYWJlbC9jb3JlJztcbmltcG9ydCB7IHZlcnNpb24gYXMgYmFiZWxDb3JlVmVyc2lvbiB9IGZyb20gJ0BiYWJlbC9jb3JlL3BhY2thZ2UuanNvbic7XG5pbXBvcnQgeyB2ZXJzaW9uIGFzIGJhYmVsTG9hZGVyVmVyc2lvbiB9IGZyb20gJ2JhYmVsLWxvYWRlci9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5cbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVCYWJlbExvYWRlcih7XG4gIHJvb3RQYXRoLFxuICBiYWJlbFJvb3QsXG4gIHRhcmdldCxcbiAgbW9kZSxcbiAgYmFiZWxMb2FkZXJPcHRpb25zLFxuICBub0hvdFJlbG9hZCxcbiAgbGlicmFyeSxcbn0pIHtcbiAgY29uc3QgcmVhY3QgPSByZXF1aXJlKFxuICAgIHJlcXVpcmUucmVzb2x2ZSgncmVhY3QnLCB7XG4gICAgICBwYXRoczogW3Jvb3RQYXRoXSxcbiAgICB9KSxcbiAgKTtcbiAgbGV0IGhhc1JlYWN0UmVmcmVzaDtcbiAgdHJ5IHtcbiAgICByZXF1aXJlKCdyZWFjdC1yZWZyZXNoL2JhYmVsJyk7XG4gICAgaGFzUmVhY3RSZWZyZXNoID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhc1JlYWN0UmVmcmVzaCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGhhc0pzeFJ1bnRpbWUgPVxuICAgIHJlYWN0ID9cbiAgICAgICghdGFyZ2V0Py5pbmNsdWRlcz8uKCdub2RlJykgJiYgc2VtdmVyLmd0ZShyZWFjdC52ZXJzaW9uLCAnMTYuMTQuMCcpKSB8fFxuICAgICAgc2VtdmVyLmd0ZShyZWFjdC52ZXJzaW9uLCAnMTguMC4wJylcbiAgICA6IGZhbHNlO1xuICBjb25zdCBjd2QgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgYmFiZWxSb290KTtcbiAgY29uc3QgZmlsZW5hbWUgPSBwYXRoLmpvaW4oY3dkLCAnbm9vcC5qcycpO1xuICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBhZmZlY3QgYmFiZWwgb3V0cHV0IChzZWUgYmFiZWwtcHJlc2V0LWFuYW5zaSlcbiAgY29uc3QgZW52VmFycyA9IFtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOVixcbiAgICBwcm9jZXNzLmVudi5CUk9XU0VSU0xJU1RfRU5WLFxuICAgIHByb2Nlc3MuZW52LkJBQkVMX0VOVixcbiAgICBwcm9jZXNzLmVudi5CQUJFTF9NT0RVTEVTLFxuICAgIHByb2Nlc3MuZW52LkJBQkVMX1BPTFlGSUxMX01FVEhPRCxcbiAgICBwcm9jZXNzLmVudi5OT19IT1RfUkVMT0FELFxuICAgIHByb2Nlc3MuZW52LlRTX0NPTkZJR19QQVRILFxuICAgIHByb2Nlc3MuZW52LlJFU09MVkVSX0FMSUFTLFxuICAgIHByb2Nlc3MuZW52LlJFU09MVkVSX1JPT1QsXG4gICAgcHJvY2Vzcy5lbnYuUk9PVF9QQVRIX1JPT1QsXG4gICAgcHJvY2Vzcy5lbnYuUk9PVF9QQVRIX1NVRkZJWCxcbiAgICBwcm9jZXNzLmVudi5ST09UX1BBVEhfUFJFRklYLFxuICAgIHByb2Nlc3MuZW52LlBPTFlGSUxMX1RBUkdFVFMsXG4gICAgLy8gYXZvaWQgY29sbGlzaW9ucyB3aGlsZSBiZWluZyBtaW5pbWFsIGFuZCBwZXJmb3JtYW50XG4gIF0uam9pbignXFwwJyk7XG5cbiAgY29uc3QgY2FjaGVJZGVudGlmaWVyID1cbiAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB2ZXJzaW9uLFxuICAgICAgdGFyZ2V0LFxuICAgICAgbW9kZSxcbiAgICAgIGhhc1JlYWN0UmVmcmVzaCxcbiAgICAgIG5vSG90UmVsb2FkLFxuICAgICAgaGFzSnN4UnVudGltZSxcbiAgICAgIGJhYmVsQ29yZVZlcnNpb24sXG4gICAgICBiYWJlbExvYWRlclZlcnNpb24sXG4gICAgICBlbnZWYXJzLFxuICAgIH0pICtcbiAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgIGJhYmVsLmxvYWRQYXJ0aWFsQ29uZmlnKHtcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgIGN3ZCxcbiAgICAgICAgc291cmNlRmlsZU5hbWU6IGZpbGVuYW1lLFxuICAgICAgfSkub3B0aW9ucyxcbiAgICApO1xuICBjb25zdCBiYWJlbExvYWRlciA9IHtcbiAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZSgnYmFiZWwtbG9hZGVyJyksXG4gICAgb3B0aW9uczoge1xuICAgICAgY3dkLFxuICAgICAgY2FjaGVEaXJlY3Rvcnk6IHRydWUsXG4gICAgICBjYWNoZUlkZW50aWZpZXIsXG4gICAgICBjYWNoZUNvbXByZXNzaW9uOiBtb2RlID09PSAncHJvZHVjdGlvbicsXG4gICAgICBjb21wYWN0OiBtb2RlID09PSAncHJvZHVjdGlvbicsXG4gICAgICAuLi5iYWJlbExvYWRlck9wdGlvbnMsXG4gICAgfSxcbiAgfTtcbiAgaWYgKHJlYWN0KSB7XG4gICAgYmFiZWxMb2FkZXIub3B0aW9ucy5jYWxsZXIgPSB7XG4gICAgICBoYXNKc3hSdW50aW1lLFxuICAgICAgLi4uYmFiZWxMb2FkZXIub3B0aW9ucy5jYWxsZXIsXG4gICAgfTtcbiAgICBpZiAobm9Ib3RSZWxvYWQpIHtcbiAgICAgIGJhYmVsTG9hZGVyLm9wdGlvbnMuY2FsbGVyLm5vSG90UmVsb2FkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKGxpYnJhcnkpIHtcbiAgICBiYWJlbExvYWRlci5vcHRpb25zLmNhbGxlci5saWJyYXJ5ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYmFiZWxMb2FkZXI7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFDLHNCQUFB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