UNPKG

@rozenite/repack

Version:
72 lines (71 loc) 2.51 kB
"use strict"; 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;