@anansi/webpack-config
Version:
Production ready webpack for React
75 lines (74 loc) • 8.49 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');
const cacheIdentifier = JSON.stringify({
version: _package3.version,
target,
mode,
hasReactRefresh,
noHotReload,
hasJsxRuntime,
babelCoreVersion: _package.version,
babelLoaderVersion: _package2.version,
env: [process.env.NODE_ENV, process.env.BROWSERSLIST_ENV].join(',')
}) + 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYWJlbCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9wYWNrYWdlIiwiX3BhY2thZ2UyIiwiX3BhdGgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3NlbXZlciIsIl9wYWNrYWdlMyIsImdlbmVyYXRlQmFiZWxMb2FkZXIiLCJyb290UGF0aCIsImJhYmVsUm9vdCIsInRhcmdldCIsIm1vZGUiLCJiYWJlbExvYWRlck9wdGlvbnMiLCJub0hvdFJlbG9hZCIsImxpYnJhcnkiLCJyZWFjdCIsInJlc29sdmUiLCJwYXRocyIsImhhc1JlYWN0UmVmcmVzaCIsImUiLCJoYXNKc3hSdW50aW1lIiwiaW5jbHVkZXMiLCJzZW12ZXIiLCJndGUiLCJ2ZXJzaW9uIiwiY3dkIiwicGF0aCIsInByb2Nlc3MiLCJmaWxlbmFtZSIsImpvaW4iLCJjYWNoZUlkZW50aWZpZXIiLCJKU09OIiwic3RyaW5naWZ5IiwiYmFiZWxDb3JlVmVyc2lvbiIsImJhYmVsTG9hZGVyVmVyc2lvbiIsImVudiIsIk5PREVfRU5WIiwiQlJPV1NFUlNMSVNUX0VOViIsImxvYWRQYXJ0aWFsQ29uZmlnIiwic291cmNlRmlsZU5hbWUiLCJvcHRpb25zIiwiYmFiZWxMb2FkZXIiLCJsb2FkZXIiLCJjYWNoZURpcmVjdG9yeSIsImNhY2hlQ29tcHJlc3Npb24iLCJjb21wYWN0IiwiY2FsbGVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2UvZ2VuZXJhdGVCYWJlbExvYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYWJlbCBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgeyB2ZXJzaW9uIGFzIGJhYmVsQ29yZVZlcnNpb24gfSBmcm9tICdAYmFiZWwvY29yZS9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHsgdmVyc2lvbiBhcyBiYWJlbExvYWRlclZlcnNpb24gfSBmcm9tICdiYWJlbC1sb2FkZXIvcGFja2FnZS5qc29uJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQmFiZWxMb2FkZXIoe1xuICByb290UGF0aCxcbiAgYmFiZWxSb290LFxuICB0YXJnZXQsXG4gIG1vZGUsXG4gIGJhYmVsTG9hZGVyT3B0aW9ucyxcbiAgbm9Ib3RSZWxvYWQsXG4gIGxpYnJhcnksXG59KSB7XG4gIGNvbnN0IHJlYWN0ID0gcmVxdWlyZShcbiAgICByZXF1aXJlLnJlc29sdmUoJ3JlYWN0Jywge1xuICAgICAgcGF0aHM6IFtyb290UGF0aF0sXG4gICAgfSksXG4gICk7XG4gIGxldCBoYXNSZWFjdFJlZnJlc2g7XG4gIHRyeSB7XG4gICAgcmVxdWlyZSgncmVhY3QtcmVmcmVzaC9iYWJlbCcpO1xuICAgIGhhc1JlYWN0UmVmcmVzaCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYXNSZWFjdFJlZnJlc2ggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBoYXNKc3hSdW50aW1lID1cbiAgICByZWFjdCA/XG4gICAgICAoIXRhcmdldD8uaW5jbHVkZXM/Lignbm9kZScpICYmIHNlbXZlci5ndGUocmVhY3QudmVyc2lvbiwgJzE2LjE0LjAnKSkgfHxcbiAgICAgIHNlbXZlci5ndGUocmVhY3QudmVyc2lvbiwgJzE4LjAuMCcpXG4gICAgOiBmYWxzZTtcbiAgY29uc3QgY3dkID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGJhYmVsUm9vdCk7XG4gIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5qb2luKGN3ZCwgJ25vb3AuanMnKTtcbiAgY29uc3QgY2FjaGVJZGVudGlmaWVyID1cbiAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB2ZXJzaW9uLFxuICAgICAgdGFyZ2V0LFxuICAgICAgbW9kZSxcbiAgICAgIGhhc1JlYWN0UmVmcmVzaCxcbiAgICAgIG5vSG90UmVsb2FkLFxuICAgICAgaGFzSnN4UnVudGltZSxcbiAgICAgIGJhYmVsQ29yZVZlcnNpb24sXG4gICAgICBiYWJlbExvYWRlclZlcnNpb24sXG4gICAgICBlbnY6IFtwcm9jZXNzLmVudi5OT0RFX0VOViwgcHJvY2Vzcy5lbnYuQlJPV1NFUlNMSVNUX0VOVl0uam9pbignLCcpLFxuICAgIH0pICtcbiAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgIGJhYmVsLmxvYWRQYXJ0aWFsQ29uZmlnKHtcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgIGN3ZCxcbiAgICAgICAgc291cmNlRmlsZU5hbWU6IGZpbGVuYW1lLFxuICAgICAgfSkub3B0aW9ucyxcbiAgICApO1xuICBjb25zdCBiYWJlbExvYWRlciA9IHtcbiAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZSgnYmFiZWwtbG9hZGVyJyksXG4gICAgb3B0aW9uczoge1xuICAgICAgY3dkLFxuICAgICAgY2FjaGVEaXJlY3Rvcnk6IHRydWUsXG4gICAgICBjYWNoZUlkZW50aWZpZXIsXG4gICAgICBjYWNoZUNvbXByZXNzaW9uOiBtb2RlID09PSAncHJvZHVjdGlvbicsXG4gICAgICBjb21wYWN0OiBtb2RlID09PSAncHJvZHVjdGlvbicsXG4gICAgICAuLi5iYWJlbExvYWRlck9wdGlvbnMsXG4gICAgfSxcbiAgfTtcbiAgaWYgKHJlYWN0KSB7XG4gICAgYmFiZWxMb2FkZXIub3B0aW9ucy5jYWxsZXIgPSB7XG4gICAgICBoYXNKc3hSdW50aW1lLFxuICAgICAgLi4uYmFiZWxMb2FkZXIub3B0aW9ucy5jYWxsZXIsXG4gICAgfTtcbiAgICBpZiAobm9Ib3RSZWxvYWQpIHtcbiAgICAgIGJhYmVsTG9hZGVyLm9wdGlvbnMuY2FsbGVyLm5vSG90UmVsb2FkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKGxpYnJhcnkpIHtcbiAgICBiYWJlbExvYWRlci5vcHRpb25zLmNhbGxlci5saWJyYXJ5ID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYmFiZWxMb2FkZXI7XG59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