rollup-plugin-react-compat
Version:
Rollup Plugin for React Compat
64 lines (56 loc) • 2.31 kB
JavaScript
const resolve = require("rollup-plugin-node-resolve");
function preact(options = {}) {
const aliasModules = options.aliasModules || {};
const resolvePlugin = resolve(options);
const customResolvePlugin = {
...resolvePlugin,
resolveId(importee, importer) {
if (options.usePreactCompat) {
if (
importee === "react"
|| importee === "react-dom"
) {
const moduleName = options.usePreactX ? "preact/compat" : "preact-compat";
return options.resolveCompat
? resolvePlugin.resolveId(moduleName, importer)
: moduleName;
}
} else if (options.useReactCompat) {
if (
importee === "react"
|| importee === "react-dom"
) {
const moduleName = "react-simple-compat";
return options.resolveCompat
? resolvePlugin.resolveId(moduleName, importer)
: moduleName;
}
} else if (options.useCroact) {
if (
importee === "react"
|| importee === "react-dom"
) {
const moduleName = "croact";
return options.resolveCompat
? resolvePlugin.resolveId(moduleName, importer)
: moduleName;
}
}
if (importee === "prop-types" && options.noPropTypes) {
return resolvePlugin.resolveId(__dirname + "/compat/prop-types.js", importer);
}
if (importee === "react-is" && options.noReactIs) {
return resolvePlugin.resolveId(__dirname + "/compat/react-is.js", importer);
}
if (aliasModules[importee]) {
return aliasModules[importee];
}
return resolvePlugin.resolveId(importee, importer);
},
intro: function intro() {
return options && options.noEnv ? `var process = { env: {NODE_ENV: "production"} };` : "";
},
}
return customResolvePlugin;
}
module.exports = preact;