casterly
Version:
CLI for Casterly
89 lines (88 loc) • 3.77 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// @ts-ignore
const babel_loader_1 = require("babel-loader");
const Log = __importStar(require("../../../output/log"));
const babelPreset_1 = __importDefault(require("../../babelPreset"));
exports.default = babel_loader_1.custom((babel) => {
const presetItem = babel.createConfigItem(babelPreset_1.default, {
type: 'preset',
});
const configs = new Set();
return {
customOptions(opts) {
const custom = {
isServer: opts.isServer,
dev: opts.dev,
hasReactRefresh: opts.hasReactRefresh,
hasJsxRuntime: opts.hasJsxRuntime,
};
const loader = Object.assign({
cacheDirectory: false,
}, opts);
delete loader.isServer;
delete loader.dev;
delete loader.hasReactRefresh;
delete loader.hasJsxRuntime;
return { loader, custom };
},
config(cfg, { _, customOptions: { isServer, dev, hasReactRefresh, hasJsxRuntime }, }) {
const options = Object.assign({}, cfg.options);
if (cfg.hasFilesystemConfig()) {
for (const file of [cfg.babelrc, cfg.config]) {
// We only log for client compilation otherwise there will be double output
if (file && !isServer && !configs.has(file)) {
configs.add(file);
Log.info(`Using external babel configuration from ${file}`);
}
}
}
else {
// Add our default preset if no "babelrc" is found.
options.presets = [...options.presets, presetItem];
}
options.caller.isServer = isServer;
options.caller.isDev = dev;
options.caller.hasJsxRuntime = hasJsxRuntime;
const emitWarning = this.emitWarning.bind(this);
Object.defineProperty(options.caller, 'onWarning', {
enumerable: false,
writable: false,
value: (options.caller.onWarning = function (reason) {
if (!(reason instanceof Error)) {
reason = new Error(reason);
}
emitWarning(reason);
}),
});
options.plugins = options.plugins || [];
if (hasReactRefresh) {
const reactRefreshPlugin = babel.createConfigItem([require('react-refresh/babel'), { skipEnvCheck: true }], { type: 'plugin' });
options.plugins.unshift(reactRefreshPlugin);
}
return options;
},
};
});
;