john-test-upgrade
Version:
Upgrade tool for Babel
95 lines (81 loc) • 2.69 kB
JavaScript
var _require = require('./packageData'),
oldPresets = _require.presets,
oldPlugins = _require.plugins; // TODO: fix all of this
function changePresets(config) {
var presets = config.presets; // check if presets are there
if (presets) {
// assume it's an array
for (var i = 0; i < presets.length; i++) {
var preset = presets[i];
var presetsToReplace = Object.keys(oldPresets); // check if it's a preset with options (an array)
if (Array.isArray(preset)) {
if (preset[0].indexOf('babel-preset') !== 0 && preset[0].indexOf('@babel/') !== 0) {
preset[0] = `babel-preset-${preset[0]}`;
}
if (presetsToReplace.includes(preset[0])) {
if (oldPresets[preset[0]]) {
preset[0] = oldPresets[preset[0]];
} else {
presets.splice(i, 1);
}
}
} else {
if (preset.indexOf('babel-preset') !== 0 && preset[0].indexOf('@babel/') !== 0) {
preset = `babel-preset-${preset}`;
}
if (presetsToReplace.includes(preset)) {
if (oldPresets[preset]) {
presets[i] = oldPresets[preset];
} else {
presets.splice(i, 1);
}
}
}
}
}
}
function changePlugins(config) {
var plugins = config.plugins; // check if plugins are there
if (plugins) {
// assume it's an array
for (var i = 0; i < plugins.length; i++) {
var plugin = plugins[i];
var pluginsToReplace = Object.keys(oldPlugins); // check if it's a plugin with options (an array)
if (Array.isArray(plugin)) {
if (plugin[0].indexOf('babel-plugin') !== 0 && plugin[0].indexOf('@babel/') !== 0) {
plugin[0] = `babel-plugin-${plugin[0]}`;
}
if (pluginsToReplace.includes(plugin[0])) {
if (oldPlugins[plugin[0]]) {
plugin[0] = oldPlugins[plugin[0]];
} else {
plugins.splice(i, 1);
}
}
} else {
if (plugin.indexOf('babel-plugin') !== 0 && plugin[0].indexOf('@babel/') !== 0) {
plugin = `babel-plugin-${plugin}`;
}
if (pluginsToReplace.includes(plugin)) {
if (oldPlugins[plugin]) {
plugins[i] = oldPlugins[plugin];
} else {
plugins.splice(i, 1);
}
}
}
}
}
}
module.exports = function upgradeConfig(config) {
config = Object.assign({}, config);
changePresets(config);
changePlugins(config);
if (config.env) {
Object.keys(config.env).forEach(function (env) {
changePresets(config.env[env]);
changePlugins(config.env[env]);
});
}
return config;
};