@rozenite/repack
Version:
Re.Pack bundler plugin for Rozenite.
72 lines (71 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const middleware = require("@rozenite/middleware");
const fs = require("node:fs");
const node_module = require("node:module");
const semver = require("semver");
const tools = require("@rozenite/tools");
var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
const REQUIRED_REPACK_VERSION = "5.2";
const require$1 = node_module.createRequire(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("index.cjs", document.baseURI).href);
const getRepackPackageJsonPath = (projectRoot) => {
try {
return require$1.resolve("@callstack/repack/package.json", {
paths: [projectRoot]
});
} catch {
return null;
}
};
const assertSupportedRePackVersion = (projectRoot) => {
const packageJsonPath = getRepackPackageJsonPath(projectRoot);
if (!packageJsonPath) {
tools.logger.error(
`Re.Pack is not installed in the project. Please install it to continue using Rozenite.`
);
process.exit(1);
}
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
const repackVersion = packageJson.version;
if (semver.satisfies(repackVersion, `>=${REQUIRED_REPACK_VERSION}`)) {
return;
}
tools.logger.error(
`Rozenite requires Re.Pack ${REQUIRED_REPACK_VERSION} or higher.
Current version: ${repackVersion}
Please upgrade your Re.Pack version to continue using Rozenite.`
);
process.exit(1);
};
const patchConfig = (config, rozeniteConfig) => {
return {
...config,
devServer: {
...config.devServer,
setupMiddlewares: (middlewares) => {
const { middleware: rozeniteMiddleware } = middleware.initializeRozenite(rozeniteConfig);
middlewares.unshift(rozeniteMiddleware);
return middlewares;
}
}
};
};
const withRozenite = (config, rozeniteConfig = {}) => {
assertSupportedRePackVersion(process.cwd());
if (!rozeniteConfig.enabled) {
return config;
}
return async (env) => {
let resolvedConfig;
if (typeof config === "function") {
resolvedConfig = await config(env);
} else {
resolvedConfig = config;
}
return patchConfig(resolvedConfig, {
projectRoot: env.context ?? process.cwd(),
...rozeniteConfig
});
};
};
exports.withRozenite = withRozenite;